Javascript 数组 - 它们在内部是如何工作的?

标签 javascript jquery arrays

我想知道 javascript 数组在内部是如何工作的,我的意思是,例如当您创建一个新数组时。

array = [1,2,3];

它在内部创建一个新数组:array = new Array();

然后调用 Array.push() 或类似的方法?

谢谢。

最佳答案

了解 javascript 内部如何工作的最佳资源是 ECMAScript specification本身。

为了理解当您执行 array = [1, 2, 3] 时内部发生了什么,您需要阅读 7.3.16 CreateArrayFromList (elements) 部分.大致发生的情况是,首先创建 Array 对象,然后使用 CreateDataProperty(7.3.4 CreateDataProperty 部分)(DefineOwnProperty) 内部方法将每个元素设置为此对象。

然后您想了解将元素插入数组时到底发生了什么。你查22.1.3.17 Array.prototype.push ( ...items )部分为此。在那里你会发现它使用了完全不同的算法,即它设置了一个对象的特定属性(7.3.3 Set (O, P, V, Throw) 部分)。

所以答案是否定的,创建像 a = [1, 2, 3] 这样的数组并不使用与 push 相同的机制来插入项目。第一个粗略地在(新创建的)数组对象上创建新属性,push属性设置为现有对象。

关于Javascript 数组 - 它们在内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48949302/

相关文章:

javascript - 图像的 Ng-repeat,但第一张图像位于不同的 div 类中

javascript - mdbootstrap 不使用 php 显示图像

javascript - 强制忽略 Redactor 编辑器中的 Prettify?

javascript - 执行数组迭代时如何避免中间结果?

javascript - jQuery 不是一个数字

javascript - 如何在 Typescript 中添加多个断言

javascript - 如何通过jquery以2秒间隔刷新特定的js或css文件?

javascript - Jquery mouseenter 和 mouseleave 不适用于 li 元素

c - 遍历 C 中的多个数组

c# - 在 C# 中将 Aes.Key 转换为 SecureString