gpt4 book ai didi

javascript - 在模块模式中封装 "object factory"是否会使对象原型(prototype)消耗更多内存?

转载 作者:行者123 更新时间:2023-11-30 09:48:20 25 4
gpt4 key购买 nike

我想在显示模块模式中封装一个“对象工厂”,以对程序的其余部分隐藏变量等。我的模块创建的对象是否共享相同的 prototype 实例?即,每次我用我的工厂创建一个新对象时,我是在内存中创建一个新的 prototype 对象,还是所有对象共享/“看到”相同的原型(prototype)?

这是我的代码的一个简化示例:

var Factory = (function(){
var uid_seed = 0;
function TestObject() {
this.size = 1;
this.name = "foo";
this.uid = uid_seed++;
}
TestObject.prototype.getName = function() {
return "Name is: " + this.name;
};
return {
testObject: function() {return new TestObject();}
}
})();

var arr = [];

for (var i = 1000; i--;) arr.push(Factory.testObject());

当我在这段代码的最后一行创建 1000 个 TestObject 对象时,它们是否每个都有一个消耗内存的原型(prototype)?或者这是一种使用共享原型(prototype)创建对象的内存高效方式吗?

最佳答案

是的,他们确实有相同的原型(prototype)。模块初始化代码只执行一次,只创建一个原型(prototype)。您还希望它们都获得不同的 uid,而不是为每个实例重新计算 uid_seed = 0,对吗?

您可以通过检查 Object.getPrototypeOf(arr[0]) === Object.getPrototypeOf(arr[1]) 轻松地进行测试。

关于javascript - 在模块模式中封装 "object factory"是否会使对象原型(prototype)消耗更多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com