繁体   English   中英

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

[英]What is the difference between adding a method to a JavaScript constructor directly and adding a method using prototype?

我正在使用 John Resig 的 JavaScript class 定义样式 下面是一个示例 class。

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

定义 dance 方法的另一种方法是:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM