我想知道 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/