在JavaScript实例上编写单个原型和使用多个原型之间的区别?只是风格
Difference between writing a single prototype on a JavaScript instance and using multiple? Just style?
我很好奇这两种使用原型编写JavaScript函数的方式有什么不同。在许多JS风格指南中,后者比前者更受欢迎,但由于DRY原则,我发现后者有些多余。这只是一个风格问题吗?一个版本比另一个更快吗?是我遗漏了什么明显的东西吗?:
保持干燥?
var Klass = function() {}
Klass.prototype = {
propertyA: 20,
propertyB: "hey there",
methodA: function() {},
methodB: function() {},
}
通常在样式指南中推荐:
var Klass = function() {}
Klass.prototype.propertyA = 20;
Klass.prototype.propertyB = "hey there";
Klass.prototype.methodA = function() {};
Klass.prototype.methodB = function() {};
任何帮助澄清这将是感激的!谢谢——
第一个示例将prototype
完全替换为对象的内容;第二个是在不破坏现有数据的情况下设置单个属性。
您可以使用extend
的某些版本将该对象合并到原型中,从而使第一个示例像第二个示例一样工作。
唯一的区别是第一个方法替换了原型,而不是添加到原型中。如果您在将函数赋值给变量后立即执行此操作,则没有实际区别。
如果您使用常规函数而不是将函数表达式赋值给变量,即:
function Klass() {}
则第二个方法可以在函数声明之前和之后使用,例如:
Klass.prototype.propertyA = 20;
Klass.prototype.methodA = function() {};
function Klass() {}
Klass.prototype.methodB = function() {};
Klass.prototype.propertyB = "hey there";
如果你替换了原型对象,你只能在之前或之后声明,所以原型方法仍然在一个地方。
相关文章:
- “util.inherits”和在NodeJS中扩展原型之间的区别
- JS构造函数的原型属性与其原型之间的区别
- 两个对象之间的Javascript原型
- 向构造函数或原型添加属性之间的区别
- 不需要的Javascript效果:原型在实例之间共享闭包
- 理解经典继承和原型继承之间的区别
- 基于类的语言(如Java或Python)和基于原型的语言(例如Javascript)之间的区别
- 试图理解JavaScript中原型和构造函数之间的区别
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- Javascript 原型和调用之间的区别
- 使用原型和对象文字表示法创建对象之间的区别
- 构造函数中的方法与函数的原型属性之间的差异
- 原型:这两个脚本之间的区别
- 构造函数模式和原型模式之间的区别
- 原型函数和 json 表示法函数之间的区别
- 将方法分配给函数内部或外部原型之间的差异
- 持久化对象之间的MongoDB原型继承
- 在JavaScript实例上编写单个原型和使用多个原型之间的区别?只是风格
- 使用或不使用原型之间的区别:它们显然也在做同样的事情
- 对象与其原型之间的差异