gpt4 book ai didi

javascript - 如何在 Javascript 对象中找到隐藏的属性/方法?

转载 作者:行者123 更新时间:2023-11-28 19:46:14 29 4
gpt4 key购买 nike

我想自动确定所有属性(包括隐藏的)在给定的 Javascript 对象中,通过 this 的泛化功能:

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 -> View -> Developer -> Developer Tools)。运行 console.dir(Math) 并单击三 Angular 形向下钻取以列出所有方法。这对于大多数交互/发现工作来说已经足够了(您实际上不需要在运行时执行此操作)。

最佳答案

ECMAScript 5th ed.定义 Object.getOwnPropertyNames 返回传入对象的所有属性的数组,包括不可枚举的属性。到目前为止,只有 Chrome 实现了这一点。

Object.getOwnPropertyNames({a: 10, b: 2});

给出 ["b", "a"](无特定顺序)

Object.getOwnPropertyNames(Math);

给出 ["LN10", "PI", "E", "LOG10E", "SQRT2", "LOG2E", "SQRT1_2", "LN2", "cos", "pow", "log ", "tan", "sqrt", "ceil", "asin", "abs", "max", "exp", "atan2", "random", "round", "floor", "acos", "atan", "min", "sin"]

关于javascript - 如何在 Javascript 对象中找到隐藏的属性/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940423/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com