[英]How can I implement the lodash _.remove function in modern browsers?
[英]How do modern browsers implement JS Array, specifically adding elements?
我的意思是當在數組 object 和 JavaScript 上調用.push()
時,會增加底層“數組”的容量(以元素數量計)。 此外,如果有一個很好的資源可以為 JS 找到此類信息,那么將其包含在內會很有幫助。
編輯
看起來 JS 數組就像一個具有特殊屬性的 object 文字。 但是,我對較低級別的細節感興趣——瀏覽器如何在它們各自的 JS 引擎中實現這一點。
這個問題不可能有任何單一的正確答案。 數組的擴展機制是一個內部實現細節,可以從一個 JS 實現到另一個不同。 事實上,Tamarin 引擎有兩種不同的實現,用於 arrays 內部,具體取決於它確定數組是順序的還是稀疏的。
這個答案是錯誤的。 請參閱@Samuel Neff 的回答和以下資源:
http://news.qooxdoo.org/javascript-array-performance-oddities-characteristics
http://jsperf.com/array-popuplation-direction
JavaScript 中的 Arrays 沒有容量,因為它們不是真正的 arrays。 它們實際上只是 object 散列,具有length
屬性和"0"
、 "1"
、 "2"
等屬性。當您對數組執行.push()
時,它實際上會:
ary[ ary.length++ ] = the_new_element; // set via hash
Javascript 確實包含一種聲明數組長度的機制,例如:
var foo = new Array(3);
alert(foo.length); // alerts 3
但由於 arrays 在 javascript 中是動態的,因此沒有理由這樣做,您不必手動分配 arrays。 上面的例子沒有創建一個固定長度的數組,只是用 3 個未定義的元素初始化它。
// 編輯:我要么誤讀了你的問題,要么你改變了它,對不起,我認為這不是你要問的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.