陣列與 for in
這堂課將介紹一個很容易誤會的用法,Array
& for in
還記得在 reflection and extend 這堂課中我們透過 for
迴圈將物件的屬性與方法擴充到另一個物件,而在 JavaScript 中,陣列也是物件,所以我們可以透過 for in
的方式取得陣列中的索引與值 name value pair
1 | var arr = ['John', 'Jane', 'Jim']; |
在單純透過中括號建立物件 literal array
時,其實也是 new
一個物件,所以它的 prototype
也會指向 Array.prototype
,所以如果我們在這上方直接新增屬性或方法,新建立的陣列也會取得,但透過 for in
列出陣列的 name value pair
時,新增在 Array.prototype
的屬性與方法也會被列出
1 | Array.prototype.myCustomFeature = 'cool!'; |
所以在開發 Array
相關程式時,避免使用 for in
方式遍歷它的內容,使用標準的 for
迴圈即可,就不會出現 prototype
所新增的屬性與方法了。
1 | for(var i = 0; i < arr.length; i++>) { |