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 的开发人员工具(Chrome -> View -> Developer -> Developer Tools)中使用 console.dir。运行 console.dir(Math) 并单击三角形钻取以列出所有方法。这对于大多数交互式/发现工作足够好(您实际上不需要在运行时执行此操作)。