对JavaScript 数组清除附带函数内存会不会有一定的减少

发布于 2022-09-13 00:18:47 字数 232 浏览 23 评论 0

image.png

这个代码清除了像 push,fill,some... 的函数调用
而只保存了 length索引取值
这种写法 内存占用会不会减少?

如果内存占用减少,那么 这个写法是很适合写那些只需要读的数据,不需要改变的数据。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感情洁癖 2022-09-20 00:18:47

这个理论上不会减少内存占用,因为标准数组对象的内置方法其实是运行环境中内生的,这些方法和数组对象中实体数据之间并不是直接联系。根据javascript中内存中数组对象的组织,大致上可以认为是

数组对象{
    数组元素集,
    数组长度等属性值,
    数组属性方法(指针值,即__proto__值)
}

这里,你所谓的把__proto__设置为null来清楚数组对象对应的方法其实对某个具体数字占用内存空间来说没有意义,因为数组对象在内存中的存储结构(大小)没有发生任何实质性改变。借用C语言中对某个结构体占用空间来类比,即数组属性中__proto__的值的类型一定情况下,__proto__具体的值并不影响数组本身占用空间大小,再通俗的说,__proto__是一个内存指针值(变量)时,它的值为null还是实际一个有意义的内存值,对__proto__占用空间来说是一样的。

苦行僧 2022-09-20 00:18:47

不会。因为生成对象的时候并没有把对应的原型给拷贝过来,而是为这个对象创建了对其原型的一个引用,而你的操作仅仅是解除了这种引用,其原型还好好地保留着,随时准备被其他实例访问。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文