JavaScript – 如何列出对象的属性?
有没有办法列出一个对象(甚至可能是一个函数)的所有属性,包括不可枚举的,但不使用Object.getOwnPropertyNames
或Object
其他方法?
所以,例如,我需要获取本地String
构造函数( fromCharCode
, fromCodePoint
, raw
等)的所有属性,但是我不允许使用来自Object
本地函数getOwnPropertyNames
。 有没有办法做到这一点?
我试过for..in
和for..of
循环,但不是所有的属性都列出。 另外,我已经尝试了Object.keys
,但是又一次,并没有列出所有的属性。 另外,要清楚我要求的是什么:以下是不允许的:
var a = Object.getOwnPropertyNames.bind(Object); console.log(a(String));
我在问这个,因为我正在玩一些游戏(称为ElevatorJS
),用户在这里写一个JavaScript程序,在受限制的条件下实现某些function。 在这个特定的条件下, getOwnPropertyNames
方法被重写并且等于null
,所以我们不允许使用它。 但是,事实certificate,他们已经隐藏了一些非可枚举的属性在String
构造函数中作为一个属性,所以我必须以某种方式访问它。 另外,它们也覆盖了Object
其他方法(如entries
, getOwnPropertyDescriptors
等)。
有没有办法做到这一点? 先谢谢你。
你可以使用Reflect.ownKeys(String)
,它会给你所有的参数成员。