1. 程式人生 > >JavaScript物件遍歷順序的"坑";

JavaScript物件遍歷順序的"坑";

筆者近日看JavaScript權威指南這本良書,結合自己的理解,寫出一篇關於原型繼承屬性遍歷的,這算是人生第一篇帖子,希望大牛理解菜雞的觀點。

我們都知道物件的遍歷順序一般都是根據物件屬性定義的順序來,按現在的瀏覽器廠商走向應該不會修改這個順序。(物件的屬性分為可列舉和不可列舉之分,它們是由屬性的enumerable值決定的。可列舉性決定了這個屬效能否被for…in查詢遍歷到,JS的基內建物件的原型屬性都不能被列舉,屬於不可列舉屬性)。

遍歷物件同樣可以遍歷繼承的屬性,包括各種繼承方法繼承的可列舉屬性,如果原型鏈上有多個物件,那麼鏈上面的每一個原型物件的屬性的遍歷也是依照特定的順序,這裡的順序指的是繼承的順序,繼承屬性按原型物件的定義順序。這是JavaScript權威指南的說法,但是筆者前幾天受教大神的指點,得出了另一個理論,就是物件的遍歷順序應該是鍵可以用parseInt解析成整數的,按數值升序順序,鍵不能用parseInt解析成整數的,才按定義順序。

用我的理解,原型的繼承也應該是如此,關於原型物件的繼承遍歷的順序,最後的結果如何筆者還需要進一步探究,筆者的第一篇部落格就是這樣,有不足之處歡迎指出。