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

直接向JavaScript构造函数添加方法和使用prototype添加方法有什么区别?,javascript,inheritance,Javascript,Inheritance,我正在使用John Resig的JavaScript。下面是一个示例类 var Person = Class.extend({ init: function(isDancing){ this.dancing = isDancing; }, dance: function(){ return this.dancing; } }); 定义舞蹈方法的另一种方法是: Person.prototype.dance = function(){ return this.

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

var Person = Class.extend({
  init: function(isDancing){
    this.dancing = isDancing;
  },
  dance: function(){
    return this.dancing;
  }
});
定义舞蹈方法的另一种方法是:

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

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

我自己刚刚找到了解决方案

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


因此,当使用John Resig的代码时,第一种方法并不是低效的

如果你找到了答案,自己回答问题(有一个按钮标记为“回答你自己的问题”或其他什么),并将其标记为答案。这样,未来的PEEP将受益匪浅。:-)@托马斯·希尔兹已经试过了。。。但是我没有足够的分数来回答我自己的问题。要等8个小时:)啊,好的。忘了那件事。:)