JavaScript 数组内部内存组织

问题描述

来自 Java 和 C,我对数组的理解是它们在内存中占据线性空间,因此调整数组大小是有问题的,实现可调整大小的数组的唯一方法是创建一个更大的数组并复制所有元素或创建一个更大的尺寸以备将来使用。

现在,JavaScript 数组是动态的,但我不明白当数组大小改变时分配的内存会发生什么,假设,

const fruits = ["Apple","Orange","Banana"];

现在据我所知,连续占用了3个单位的内存。现在,如果我执行 fruits.push("Kiwi");,它会向数组添加一个新元素。现在我不明白如何调整内存大小以添加新元素。 JavaScript 是否实现了动态内存分配,只是将新的内存块链接到前一个描述数组的内存块?

我在某处读到 JavaScript 将一切视为对象。那么即使它确实把数组当成一个对象,当大小发生变化时,底层的内存结构会发生什么变化?

解决方法

据我所知,Javascript 实现了动态内存分配。您不断在数组中添加值,它会根据插入的值继续分配内存。

与基于 Java 静态的变量和方法不同,Javascript 的工作方式不同。