【发布时间】:2014-07-30 00:26:03
【问题描述】:
如果我有一个包含三个对象的数组:
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];
对比
使用给定的原型创建对象(我的数组的项目)
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];
对比
创建一个具有公共属性的对象并扩展我的数组项以使用该对象
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];
【问题讨论】:
-
为什么不是第四个选项,类似于您的第二个选项,但是在使用
new或Object.create时将id 添加到原型并为其分配一个值? -
你能举个例子吗?
-
见 Greg Burghardt 的回答。
-
也许这会有所帮助。 Object.create 和/或构造函数使用较少的 CPU 和内存,是 oop JavaScript 的常用模式:stackoverflow.com/questions/16063394/…
标签: javascript arrays memory