对JavaScript 数组清除附带函数内存会不会有一定的减少
这个代码清除了像 push,fill,some...
的函数调用
而只保存了 length
和 索引取值
这种写法 内存占用会不会减少?
如果内存占用减少,那么 这个写法是很适合写那些只需要读的数据,不需要改变的数据。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个理论上不会减少内存占用,因为标准数组对象的内置方法其实是运行环境中内生的,这些方法和数组对象中实体数据之间并不是直接联系。根据javascript中内存中数组对象的组织,大致上可以认为是
这里,你所谓的把
__proto__
设置为null
来清楚数组对象对应的方法其实对某个具体数字占用内存空间来说没有意义,因为数组对象在内存中的存储结构(大小)没有发生任何实质性改变。借用C语言中对某个结构体占用空间来类比,即数组属性中__proto__
的值的类型一定情况下,__proto__
具体的值并不影响数组本身占用空间大小,再通俗的说,__proto__
是一个内存指针值(变量)时,它的值为null
还是实际一个有意义的内存值,对__proto__
占用空间来说是一样的。不会。因为生成对象的时候并没有把对应的原型给拷贝过来,而是为这个对象创建了对其原型的一个引用,而你的操作仅仅是解除了这种引用,其原型还好好地保留着,随时准备被其他实例访问。