我在考虑一件事,因为for(var i in obj)
几乎可以枚举DOM或javascript对象中的任何,所以是否有任何使用for ... in
的自我主题javascript编辑器提供语法自动建议,发现类属性/方法,外部API?
Edit1:谢谢大家的语法建议和不可枚举的功能,但我想要的是基于这个想法的编辑器。
答案 0 :(得分:3)
因为某些成员是不可枚举的,所以你必须使用Object.getOwnPropertyNames
,甚至可以稍微走一条原型链(使用Object.getPrototypeOf
)。这就是我的意思:
>>> Object.getOwnPropertyNames([]);
["length"]
>>> Object.getOwnPropertyNames(Array.prototype);
["length", "constructor", "toSource", "toString", "toLocaleString", ...]
答案 1 :(得分:1)
for(in)
只会为您提供可枚举的属性,但不包括大多数函数。
不幸的是,很大一部分DOM是由不可枚举的函数而不是属性构成的,这意味着你的想法可能无法以任何有意义的方式工作。抱歉。 :(
这是一个类似的问题,有人询问如何枚举window
对象:http://compgroups.net/comp.lang.javascript/Please-help-with-enumerating-functions-in-window-object。
[编辑]
各种浏览器(如Firebug)中的调试工具在浏览器正常环境范围之外的某个级别工作。这允许他们执行诸如查看不可枚举元素之类的事情,以及跨越选项卡和域之间的界限。在正常浏览器范围内工作的脚本是有限的,不能做这些事情。
因此,如果您的计划是编写浏览器插件,那么是的,您可以这样做。然而,将其作为普通javascript包含在浏览器中完全不同于此。