JavaScript - 如何列出对象的属性?

时间:2017-08-30 02:24:35

标签: javascript node.js object methods ecmascript-7

有没有办法列出对象的所有属性(可能甚至是一个函数),包括不可枚举的属性,但没有使用Object.getOwnPropertyNamesObject的其他方法?

因此,举例来说,我需要获取原生String构造函数(fromCharCodefromCodePointraw等)的所有属性,但我还是不允许使用名为Object的{​​{1}}的原生函数。有没有办法实现这个目标?

我已尝试getOwnPropertyNamesfor..in循环,但并未列出所有属性。此外,我已尝试for..of,但同样,并未列出所有属性。另外,要明确我要求的内容:不允许以下内容:

Object.keys

我之所以这样问是因为我正在玩一些游戏(称为var a = Object.getOwnPropertyNames.bind(Object); console.log(a(String)); ),其中用户编写的JavaScript程序应该在限制条件下实现。在此特定条件下,方法ElevatorJS被覆盖并且等于getOwnPropertyNames,因此我们不允许使用它。但是,事实证明他们已将null构造函数中的一些非可枚举属性隐藏为属性,因此我必须以某种方式访问​​它。此外,他们也覆盖了String的其他方法(例如Objectentries等)。

有没有办法实现这一目标?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Reflect.ownKeys(String),它将为您提供参数的所有拥有成员。