空格,
2个, 因为有多层函数嵌套
行宽,
80个字符
语句分隔,
一律用; 并且占一行
变量定义,
每一个都要用 var, 并且不要定义全局变量
变量名和属性名,
小驼峰, yourName
函数,
小驼峰, 类 大驼峰 YourClass
引号,
一律用 '' 单引号
关联数组初始化:
将 var = { 放在一行,下面每行一对键值,保持两空格的缩进,以分号结尾,}; 最后单独另起一行.
对于每对键值,除非键名之中有空格或者有非法字符,否则一律不用引号.
例如
var anArray = {
name: 'asdf',
'is good': true,
}
等号:
尽量使用 === 而不是 == 来判断相等
命名函数,
尽量给构造函数和回调函数命名
对象定义
尽量将所有的成员函数通过原型定义,将属性在构造函数内定义, 然后对构造函数使用new 关键字创建对象
绝对不要把属性作为原型定义, 因为当要定义的属性是一个对象的时候,不同实例中的属性会指向同一地址.
除非必须,避免把成员函数定义在构造函数内部, 否则会有运行时的闭包开销。
function FooObj(bar) {
//在构造函数中初始化属性
this.bar = bar;
this.arr = [1, 2, 3];
}
FooObj.prototype.func = function() {
console.log(this.arr);
};
继承
首先,避免使用复杂的继承,如多重继承或深层次的继承树, 如果的确需要继承,那么尽量使用Node.js的util模块中提供的inherits函数.
例如我们要让Foo继承EventEmitter最好使用以下方式:
var util = require('util');
var events = require('events');
function Foo() {
}
util.inherits(Foo, events.EventEmitter);