使用`for ... in`的自托管javascript编辑器?

时间:2011-04-21 09:54:08

标签: javascript self-hosting

我在考虑一件事,因为for(var i in obj)几乎可以枚举DOM或javascript对象中的任何,所以是否有任何使用for ... in的自我主题javascript编辑器提供语法自动建议,发现类属性/方法,外部API?

Edit1:谢谢大家的语法建议和不可枚举的功能,但我想要的是基于这个想法的编辑器

2 个答案:

答案 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包含在浏览器中完全不同于此。