今天我在同事代碼的維護期間第一次看到這個(或第一次注意到它)。JavaScript:奇怪的(邊緣?)混合陣列/對象案例
本質上,「怪異」的部分是一樣的,如果你嘗試運行這段代碼:從nfiredly.com
var arr = [];
arr[0] = "cat"; // this adds to the array
arr[1] = "mouse"; // this adds to the array
arr.length; // returns 2
arr["favoriteFood"] = "pizza"; // this DOES NOT add to the array. Setting a string parameter adds to the underlying object
arr.length; // returns 2, not 3
得到這個例子中,我不知道是什麼的技術術語,這個「案例」是我無法在這裏或谷歌上找到關於它的任何額外信息,但它讓我非常奇怪,這種「行爲」完全可以在JavaScript中存在;陣列和對象(或關聯陣列)之間的一種「混合」。
它在上面的代碼片斷中指出那Setting a string parameter adds to the underlying object
,因此不會影響「數組」本身的長度。
這種模式是什麼?
爲什麼這是可能的?這是一個奇怪的JS怪癖還是故意的?
爲什麼你會「混合」這些類型?
從2012相關的閃電談話:[屈](https://www.destroyallsoftware.com/talks/wat) – chucksmash