避免javascript属性名占用每个对象的内存

时间:2014-06-07 12:26:13

标签: javascript memory-management prototype

如果我有一个javascript对象并定义(比如)object.myproperty = uniqueObjID,那么我假设单词“myproperty”作为条目存储到每个创建的此类对象的哈希表中。换句话说,如果我创建了1000万个这些对象,我必须为“myproperty”这个词分配1000万次存储空间,因为编译器不知道对象是否有一百万个对象会有不同的改为命名属性。

Wat是通过告诉js编译器此类型的所有对象将具有“myproperty”值来节省内存的最佳方法吗?是否足以做类似

的事情

object.prototype.init(ID){this.myproperty = ID}

1 个答案:

答案 0 :(得分:1)

  

如果我创建了1000万个这些对象,我必须为单词" myproperty"分配存储空间。 1000万次,因为编译器不知道对象一百万和一个是否会有一个不同命名的属性。

是什么让您认为编译器无法区分具有myproperty属性的百万个对象和具有不同命名属性的对象?实际上,这就是JS编译器做的

举个例子,看一下V8引擎的hidden classes(即使它们比简单的表有更多)。