Page 179 - Node.js开发指南
P. 179

附录 B  Node.js 编程规范    173


               B.11  对象定义                                                                             1

                   尽量将所有的成员函数通过原型定义,将属性在构造函数内定义,然后对构造函数使用
               new 关键字创建对象。绝对不要把属性作为原型定义,因为当要定义的属性是一个对象的
               时候,不同实例中的属性会指向同一地址。除非必须,避免把成员函数定义在构造函数内部,                                              2
               否则会有运行时的闭包开销。
                   正确:


                   function FooObj(bar) {                                                             3
                     //在构造函数中初始化属性
                     this.bar = bar;
                     this.arr = [1, 2, 3];
                   }

                   //使用原型定义成员函数                                                                       4
                   FooObj.prototype.func = function() {
                     console.log(this.arr);
                   };

                   var obj1 = new FooObj('obj1');                                                     5
                   var obj2 = new FooObj('obj2');
                   obj1.arr.push(4);
                   obj1.func(); // [1, 2, 3, 4]
                   obj2.func(); // [1, 2, 3]
                                                                                                      6
                   错误:

                   function FooObj(bar) {
                     this.bar = bar;
                     this.func = function() {
                       console.log(this.arr);                                                         7
                     };
                   }

                   FooObj.prototype.arr = [1, 2, 3];
                                                                                                      8
                   var obj1 = new FooObj('obj1');
                   var obj2 = new FooObj('obj2');
                   obj1.arr.push(4);
                   obj1.func(); // [1, 2, 3, 4]
                                                                                                      9
                   obj2.func(); // [1, 2, 3, 4]

               B.12 继承

                                                                                                      10
                   首先,避免使用复杂的继承,如多重继承或深层次的继承树。如果的确需要继承,那么
   174   175   176   177   178   179   180   181   182   183   184