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

标签 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;
};

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

最佳答案

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

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

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

关于javascript - 直接向 JavaScript 构造函数添加方法和使用原型(prototype)添加方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162958/

相关文章:

javascript - 使用 jquery 获取选中的复选框的 id

javascript - Jquery Ajax 函数 setInterval - 控制台错误

javascript - javascript中do-while循环的用例?

java - 父类(super class)中的按钮仍在子类中

c++ - 为什么我的函数名称中会出现随机的额外字母?

inheritance - 如果 Car 是 Vehicle 的子类型,为什么 Vehicle->void 被视为 Car->void 的子类型?

java - java接口(interface)与继承

javascript - 从 Java Script 子类中的重写方法调用父类(super class)方法?

javascript - 我应该将主页模式插入哪个 Shopify .liquid 文件?

JavaScript 函数作用域