如何编写高效的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" 但是不同于基础类型, ...

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

使用use strict 虽然js一直很流行,但是一直到97年才有了标准化,官方成为ECMAScript(以下简称为ES),然而到今天仍然有很多不同版本的javascript实现。 ES3即ECMAScript第三版与1999年最终定稿,成为被广泛接受的js版本。之后的下一个版本ES5直到2009年才发布,它将一些以前未成为规范的一些特性纳入到了标准当中,然而ES5并没有被浏览器普遍支持 由于历史的原因及众多js的实现版本,很难知道每个平台都有实现哪些特性,或者新增了哪些未成为标准的特性,开发人员更无从指定浏览器去用什么版本的js实现来执行代码,因此开发人员必须很小心的去写兼容性代码。 因此ES5引入了strict模式来考虑版本兼容的问题,通过在代码开始处加入"use strict"来使代码运行在严格模式下,顾名思义严格模式对js的实现有非常严格的规范要求,而不支持这个字符串的浏览器会把他仅仅当作一个为操作的字符串,执行后马上丢弃掉 在函数中首行也可以加入此关键字来是函数处于严格模式执行 ...