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