Javascript 创建构造函数后使用原型有什么好处?
如果你有一个构造函数,比如Javascript 创建构造函数后使用原型有什么好处?,javascript,performance,javascript-objects,Javascript,Performance,Javascript Objects,如果你有一个构造函数,比如 var SomeClass = function(){ this.a= ""; this.b= ""; } 然后假设您使用prototype添加了另一个方法 SomeClass.prototype.fn = function fn(){ console.log(this.a); }; 为什么要使用prototype,您可以将此方法添加到构造函数中 功能 因为现在如果创建1000个对象,它们将共享相同的字段,并反复重复:{a:,b:,fn:
var SomeClass = function(){
this.a= "";
this.b= "";
}
然后假设您使用prototype添加了另一个方法
SomeClass.prototype.fn = function fn(){
console.log(this.a);
};
为什么要使用prototype
,您可以将此方法添加到构造函数中
功能
因为现在如果创建1000个对象,它们将共享相同的字段,并反复重复:{a:,b:,fn:myClass/this.fn()}
这会消耗内存,是一种糟糕的做法。当您将
fn
委托给class.prototype
时,代码不会重复,对象“更轻”:{a:,b::}
,但它们仍然可以使用fn
方法。有一些好处:
fn
函数,由使用该构造函数创建的所有对象重用;这比在每个对象上使用单独的函数更节省内存prototype
属性上可用意味着它可以用于其他对象,而不是通过构造函数创建的对象;这通常会产生良好的效果,例如:
Array.prototype.forEach.call(
document.querySelectorAll("div"),
function(div) {
// ...
}
);
因为当你用new关键字从函数中创建一个对象时
tesObject= new Class();
每次都要在每个对象中重新创建函数
因此,它使用了更多的内存和更少的共振。可能重复我更新了你的问题,以消除语法错误(并遵循正常的JavaScript命名标准;构造函数最初按约定大写)
class
是一个关键字,您不能将其用作变量名。谢谢,这是为了解释。Ad 3:但是如果该方法在构造函数中,那么您也只能在一个地方更新它,对吗?@Adrianwymanski:对不起,我不清楚。您正在考虑修改源代码。我说的是在运行时动态更改结构,这是JavaScript的一个更强大的方面。
tesObject= new Class();