【发布时间】:2011-02-25 19:02:45
【问题描述】:
我想自动确定所有属性(包括 隐藏的)在给定的Javascript对象中,通过这个的概括 功能:
function keys(obj) {
var ll = [];
for(var pp in obj) {
ll.push(pp);
}
return ll;
}
这适用于用户定义的对象,但对许多内置对象无效:
repl> keys({"a":10,"b":2}); // ["a","b"]
repl> keys(Math) // returns nothing!
基本上,我想编写 Python 的 dir() 和 help() 的等效函数,它们在探索新对象时非常有用。
我的理解是只有内置对象具有隐藏属性(用户代码evidently 无法设置“可枚举”属性直到 HTML5),所以一种可能性是简单地将 Math、String 等的属性硬编码到一个 dir() 等效项(使用诸如 here 之类的列表)。但是有更好的方法吗?
编辑:好的,到目前为止我看到的最佳答案是this thread。你不能用自己的 JS 代码轻松地做到这一点,但下一个最好的方法是在 Chrome 的开发者工具中使用 console.dir(Chrome -> 查看 -> 开发者 -> 开发者工具)。运行 console.dir(Math) 并单击三角形向下钻取以列出所有方法。对于大多数交互式/发现工作来说,这已经足够好了(您实际上并不需要在运行时执行此操作)。
【问题讨论】:
标签: javascript python introspection hidden