为什么我要将函数添加到对象原型中,而不是将其添加到对象中
Why would I add a function to an objects prototype rather than add it to the object?
有人问我这个问题,我有点不知所措。
由于这是一个问答;A在这里问是有道理的。
为什么我要将函数添加到对象原型中,而不是将其添加到对象中?
因为,如果将它添加到原型中,它将在对象的所有"实例"上可用。如果将其添加到对象本身,则它将仅在该单个实例上可用。
考虑这两个对象:
对象1
var myObject1 = function() {
this.myProperty = true;
this.myMethod = function() {
return this.myProperty;
};
}
对象2
var myObject2 = function() {
this.myProperty = true;
}
myObject2.prototype.myMethod = function() {
return this.myProperty;
};
每次我们这样做:
var test = new myObject1();
myObject1.myMethod也会被创建。当我们这样做的时候:
var test = new myObject2();
myObject2.myMethod没有需要再次创建的开销,因为它已添加到原型链中。
这在少数情况下并不重要,但在一个游戏中,例如,可能有数百个实例,这可能会对性能造成很大影响。
这篇net.tutsplus的文章可能比我更能解释它http://net.tutsplus.com/tutorials/javascript-ajax/prototypes-in-javascript-what-you-need-to-know/
相关文章:
- FabricJs-限制主对象内添加对象的移动区域
- 向Angular作用域对象添加对象数组——TypeError
- Javascript使用+添加对象
- 动态添加对象的jQuery事件处理程序
- 添加JQuery UI在Meteor中添加对象后可调整大小
- 在我的上下文中添加对象的动态方法
- 如何检测是否已使用 angular.forEach AngularJS 添加对象
- 在对象coffeescript中添加对象数组
- 使用Jquery在单击“”时显示表单;添加对象”;按钮
- 我可以向数组添加对象键吗
- 向扩展数组的JS集合添加对象(继承?)
- 尝试通过从自动完成推送添加对象时缺少 $$Hashkey
- 添加对象值 Javascript
- 在上传问题时添加对象
- 如何使用 javascript 的变量名称在数组中添加对象属性
- 在 JavaScript/TypeScript 中动态地“直接”添加对象属性到“this”
- 如何仅当对象不存在时才使用javascript添加对象
- 如何在数组末尾添加对象的副本
- rails在javascript url中添加对象
- ThreeJS-按不同顺序添加对象会影响alpha/显示