共计 7 篇文章

如何编写高效的js代码(6)

hasOwnProperty和for...in hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数 而for..in语句是用来查找对象属性时遍历原型链上的所有属性(for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length 属性) 一般我们会用for...in循环来遍历某个对象中的所有自定义属性,就像操作字典一样,而for...in又会去查找原型链,如果你在原型链上加入了一个可以被枚举的(enumerable 设置为 ...

如何编写高效的js代码(5)

了解prototype,getPrototypeOf和proto的不同 C.prototype是用来建立与用new C()生成的对象实例的原型关系 Object.getPrototypeOf(obj)是ES5用来获取某个对象原型的方法 obj._proto_是某些浏览器获取某个对象原型的方式,该属性并未纳入到标准中 拿代码来举例 function Foo(name, passwordHash) { this.name = name; this.passwordHash = passwordHash; } Foo. ...

如何编写高效的js代码(4)

永远不要修改函数的arguments对象 函数的arguments对象看起来像个数组,但其实他并不是数组的一个实例,因此他没有数组的方法,如arguments.shift(),但是我们可以借助函数对象的call方法来实现,假如有以下例子 function callMethod(obj, method) { var shift = [].shift; shift.call(arguments); shift.call(arguments); return obj[method].apply(obj, ...

如何编写高效的js代码(3)

小心使用命名的函数表达式 一般函数声明为 function double(x) { returnx * 2; } 此处声明了一个函数double,并将其绑定为当前作用域的一个变量,假设此处为全局的地方,则我们在window下定义了一个函数 另外一种定义函数的方式叫命名函数表达式 var f = function double(x) { returnx * 2; }; 该方式将函数赋值给了f,而不是double,当然一般情况下我们不需要给函数表达式一个名字,可以使用匿名函数的形式 var f = function( ...

如何编写高效的js代码(2)

多使用基础类型,少使用包装类 js有5中基础类型:null,undefined,string,number,bool(尽管typeof null"object"),js提供了这几种基础类型的包装类,例如你可以构造一个字符串 var s = new String("hello"); s + " world";// "hello world" s[4];// "o" 但是不同于基础类型, ...