如果你有像
这样的构造函数var SomeClass = function(){
this.a= "";
this.b= "";
}
然后让我们说你用原型
添加另一种方法SomeClass.prototype.fn = function fn(){
console.log(this.a);
};
为什么要使用prototype
,只需将此方法添加到构造函数中即可
功能
答案 0 :(得分:1)
有一些好处:
它创建一个 fn
函数,由该构造函数创建的所有对象重用;这比每个对象上的单独函数更具内存效率。
让对象保持与原型的动态链接意味着当您向原型添加方法时,它们可用于已存在的对象。
只有一个函数,所有相关对象的重用意味着您可以在运行时在运行时中更新该函数,并且只使用更新的函数所有相关对象,甚至是已经存在的对象。
在构造函数的prototype
属性上使用它意味着它可以在其他对象上使用,而不是通过构造函数创建;这通常用于产生良好效果,例如:
Array.prototype.forEach.call(
document.querySelectorAll("div"),
function(div) {
// ...
}
);
答案 1 :(得分:0)
var myClass = function(){
this.a = "";
this.b = "";
this.fn = function(){
console.log(this.a);
}
};
现在,如果您创建了1000个对象,它们将会一遍又一遍地重复共享相同的字段:{ a: "", b: "", fn: myClass/this.fn() }
。
这是耗费内存的,并且是一种不好的做法。当您将fn
委托给class.prototype
时,代码不会重复,对象会“更轻”:{ a: "", b: "" }
,但他们仍然可以使用fn
方法。
答案 2 :(得分:0)
因为当您使用new关键字
创建一个带有该功能的对象时tesObject= new Class();
每次在每个对象中重新创建函数。
所以它使用更多的内存,而且使用的更少。