JavaScript空对象大小

pro*_*eld 10 javascript memory object

JavaScript中空对象的内存占用量是多少?如果使用对象文字语法创建对象:

let emptyObj = {};
Run Code Online (Sandbox Code Playgroud)

在谷歌C​​hrome开发者工具(配置文件选项卡)中,拍摄快照后,它显示浅尺寸保留尺寸等于56字节.此外,如果通过以下方式创建对象,则会出现相同的大小:

let emptyObj = Object.create(null);
Run Code Online (Sandbox Code Playgroud)

对我来说,这太过分了,因为我在代码执行期间创建了很多对象(不一定是空的,但主要是只有很少的属性),我必须将它们存储在内存中.我假设如果可以减少空对象大小,也可以通过相同数量的字节减少具有属性的对象的大小.

例如,如果object看起来像这样:

let foo = {bar: 4};
Run Code Online (Sandbox Code Playgroud)

它的大小,比方说,56(空对象开销)+ 6(密钥)+ 8(值)= 70字节,然后将空对象的大小减少40个字节将导致foo的大小为30字节(16 + 6 + 8).

这是对Chrome空对象大小的正确解释吗?是否可以减少它?它会导致非空对象的大小减小吗?

The*_*evs -2

空的物体并不那么空。如果这样做emptyObj.__proto__ = null将会删除该__proto__链。但随后它可能会抛出 . 的一些基本方法的错误Object。然而,简单的属性分配和属性读取就可以很好地工作。希望它能为您节省一些字节。