选项A:
myobj = {
a: 'a',
a1: 'a1',
a2: 'a2',
a2a: 'a2a',
a2b: 'a2b',
a3: 'a3',
a3a: 'a3a',
a3a1: 'a3a1',
a3a2: 'a3a2',
b: 'b',
// ...
};
VS。 选项B:
myobj = {
a: {
a1: 'a1',
a2: {
a2a: 'a2a',
a2b: 'a2b'
},
a3: {
a3a: {
a3a1: 'a3a1',
a3a2: 'a3a2'
}
}
},
b: { ... }
};
我把这当作一个设计决定。这是一个更简单的案例:
选项A:
eventHandler: {
triggerObj: triggerObj,
triggerAction: triggerObj.someMethod,
responseObj: responseObj,
responseAction: responseObj.someMethod
}
VS。 选项B:
eventHandler: {
trigger: {
obj: triggerObj,
action: triggerObj.someMethod
},
response: {
obj: responseObj,
action: responseObj.someMethod
}
}
我很确定这就像眼科医生一样:他们是如此接近,这并不重要。然而,我想我是否有任何可靠的表现理由,或仅用于语义/可读性/其他。
回到问题标题:为了产生显着的性能问题需要多少额外的对象支撑?我怀疑即使是1000或甚至1,000,000也不重要: - \
答案 0 :(得分:3)
我继续前进并做到了。我创建了一个空对象,并在其中放入了100万个空对象。然后我打开了探查器。
Object count: 1,011,296
Shallow size: 12,202,312
Retained size: 14,434,484
所以每个空的JavaScript对象大约是12个字节。我也尝试使用空数组对象:
Array count: 1,000,725
Shallow size: 32,023,200
Retained size: 32,034,880
空数组对象占用大约32个字节。