我试图找出将对象添加到原型中的可能性和缺点,例如
myObject.prototype = {
init: function () {
},
runMe: function () {
},
removeItems: function () {
}
}
这实际上是合法的吗,分别做每一个有什么区别,即
myObject.prototype.init = function () {}
myObject.prototype.runMe = function () {}
我尝试查找有关添加为对象但无法找到任何内容的MDN文档。任何人都可以评论推荐的方法吗?
答案 0 :(得分:4)
任何一种方法都可以,你应该选择哪种方法让你更容易做任何你正在做的事情。如果这是您修改原型的唯一地方,那么唯一有意义的区别是第一种方法默认消除了原型上的constructor
属性。
因此,如果你覆盖整个prototype
,你应该确保重新添加它的构造函数:
myObject.prototype = {
init: function () {
},
runMe: function () {
},
removeItems: function () {
},
// right here
constructor: myObject
}
答案 1 :(得分:2)
向对象原型添加多个函数的另一种方法是这样的:
var doSomething = function() { return 1 };
doSomething.someProperty = "a";
请查看有关MDN Closures的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#Performance_considerations
答案 2 :(得分:0)
我会在一些ES6风格的帮助下做到这一点:
myObject.prototype = { ...myObject.prototype,
init: function () {
},
runMe: function () {
},
removeItems: function () {
}
}
简洁明了,您不必担心像@JLRishe接受的答案那样覆盖任何内容。