gpt4 book ai didi

javascript - JavaScript 对象的内存使用

转载 作者:行者123 更新时间:2023-11-30 05:35:19 25 4
gpt4 key购买 nike

如果我有一个包含三个对象的数组:

var array = [obj1, obj2, obj3];

我的对象有一个特定属性(例如:“id”)和两个通用属性(例如:“prop”和“log”函数)..

我想知道哪个内存占用最少?用什么比较好?

在我的数组的所有项目上定义相同的属性:

var obj1 = {id: 1, prop: '@', log: function() { console.log('TEST'); }};
var obj2 = {id: 2, prop: '@', log: function() { console.log('TEST'); }};
var obj3 = {id: 3, prop: '@', log: function() { console.log('TEST'); }};

var array = [obj1, obj2, obj3];

对比

使用给定的原型(prototype)创建对象(我的数组的项目)

var myProto = {prop: '@', log: function() { console.log('TEST'); }};

var obj1 = Object.create(myProto);
obj1.id = 1;

var obj2 = Object.create(myProto);
obj2.id = 2;

var obj3 = Object.create(myProto);
obj3.id = 3;

var array = [obj1, obj2, obj3];

对比

创建一个具有公共(public)属性的对象并扩展我的数组项以使用该对象

var common = {prop: '@', log: function() { console.log('TEST'); }};

var obj1 = extend({id: 1}, common);
var obj2 = extend({id: 2}, common);
var obj3 = extend({id: 3}, common);

var array = [obj1, obj2, obj3];

最佳答案

从内存的 Angular 来看,使用原型(prototype)会更有效率。其次,由于您想在每个新对象中初始化一个属性,因此您可能需要使用构造函数。

function Foo(id) {
this.id = id || null;
}

Foo.prototype = {

id: null,

prop: "@",

constructor: Foo,

log: function() {
console.log("TEST");
}

};

var array = [
new Foo(1),
new Foo(2),
new Foo(3)
];

关于javascript - JavaScript 对象的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24120697/

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