直接向JavaScript构造函数添加方法和使用原型添加方法有什么区别?

时间:2011-05-28 16:40:04

标签: javascript inheritance

我正在使用John Resig的JavaScript class definition style。下面是一个示例类。

var Person = Class.extend({
  init: function(isDancing){
    this.dancing = isDancing;
  },
  dance: function(){
    return this.dancing;
  }
});

定义舞蹈方法的另一种方法是:

Person.prototype.dance = function(){
   return this.dancing;
};

我喜欢使用第一种方式,但有人建议我效率低下。这两种方式有什么区别?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。

John Resig的extend函数自动从作为参数传递的对象创建构造函数。在第一种方式中,对象中的dance方法将自动分配给返回对象的原型。这意味着返回的构造函数(类)实际上将使用第二种样式。因此没有必要使用第二种方式。

因此,当使用John Resig的代码时,第一种方式效率不高。