2
是否有一種方法可以遍歷JavaScript實例中存在的所有對象,而不管正在使用的JavaScript引擎如何?我對迭代網頁的DOM不感興趣。我想知道的是,是否有一種方法可以遍歷所有標準庫對象(Array,Math,Date等)以及任何可能特定於各種瀏覽器的附加庫。有沒有獲得JS實例內的所有庫對象的方法?
是否有一種方法可以遍歷JavaScript實例中存在的所有對象,而不管正在使用的JavaScript引擎如何?我對迭代網頁的DOM不感興趣。我想知道的是,是否有一種方法可以遍歷所有標準庫對象(Array,Math,Date等)以及任何可能特定於各種瀏覽器的附加庫。有沒有獲得JS實例內的所有庫對象的方法?
不......是的。 window
對象是瀏覽器中的全局對象。它包含全局範圍的所有本地成員,以及爲DOM提供的所有功能和屬性。
像Math,Array和Date這樣的本機對象是全局對象的非枚舉成員,這意味着您無法使用for...in
循環遍歷它們。這涵蓋了「否」部分—在許多瀏覽器中無法通過迭代獲取這些對象。
但是,使用ECMAScript第5版的實現(IE 9,Chrome 7,Firefox 4),您可以使用Object.getOwnPropertyNames()
獲取特定對象的屬性名稱數組。例如,
console.log(Object.getOwnPropertNames(window));
會給你的全球window
對象的所有成員,包括數學,數組,日期等
這裏指向明顯的列表,而是指全局對象使用'this'在全局範圍內(因爲在瀏覽器的上下文之外沒有'window') – Zecc 2010-11-15 16:42:18