我应该在对象原型中声明javascript对象方法吗?

时间:2014-11-09 23:01:19

标签: javascript methods constructor prototypal-inheritance

我读过的所有内容似乎都倾向于在原型声明中声明对象构造函数的方法,而不是将方法直接放入初始构造函数中。

function MyClass(name){
  this.name = name;
}

MyClass.prototype.callMethod = function(){ 
  console.log(this.name);
  };

这会被推荐吗?如果是这样,将方法放在初始构造函数中会有什么缺点。

function MyClass(name){
  this.name = name;
  this.callMethod = function(){
    console.log(this.name);
    };
}

我假设一个这样简单的案例,它在任何一种方式都不重要,但在较大的对象的情况下,在两种情况下声明该方法的含义是什么?

1 个答案:

答案 0 :(得分:2)

Effective Javascript,第34项:在原型上存储方法:

  

在原型上存储方法使它们可用于所有实例   无需实现它们的多个功能副本   或每个实例对象上的额外属性。

     
      
  • 在实例对象上存储方法会创建多个副本   函数,每个实例对象一个。
  •   
  • 首选存储方法   将它们存储在实例对象上的原型。
  •