0

我在想一件事,因为for(var i in obj)几乎可以枚举DOM 或 javascript 对象中的任何内容,那么是否有任何自托管的 javascript 编辑器用于for ... in提供语法自动建议、发现类属性/方法、外部 API?

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

4

2 回答 2

3

因为有些成员是不可枚举的,所以你必须使用Object.getOwnPropertyNames,甚至稍微走一遍原型链(使用Object.getPrototypeOf)。这就是我的意思:

>>> Object.getOwnPropertyNames([]);
["length"]

>>> Object.getOwnPropertyNames(Array.prototype);
["length", "constructor", "toSource", "toString", "toLocaleString", ...]
于 2011-04-21T10:46:36.727 回答
1

for(in)只会为您提供可枚举的属性,其中不包括大多数功能。

不幸的是,大部分 DOM 是由不可枚举的函数而不是属性构成的,这意味着您的想法可能不会以任何有意义的方式起作用。对不起。:(

这是一个类似的问题,有人询问枚举window对象:http ://compgroups.net/comp.lang.javascript/Please-help-with-enumerating-functions-in-window-object 。

[编辑]

各种浏览器中的调试工具,例如 Firebug,工作在浏览器正常环境范围之外。这允许他们执行诸如查看不可枚举元素之类的操作,并且还可以跨越选项卡和域之间的边界。在正常浏览器范围内工作的脚本是有限的,不能做这些事情。

因此,如果您的计划是编写一个浏览器插件,那么是的,您也许可以做到这一点。然而,这与将其编写为浏览器中包含的普通 javascript 完全不同。

于 2011-04-21T10:04:24.970 回答