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

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

所以,例如,我需要获取本地String构造函数( fromCharCodefromCodePointraw等)的所有属性,但是我不允许使用来自Object本地函数getOwnPropertyNames 。 有没有办法做到这一点?

我试过for..infor..of循环,但不是所有的属性都列出。 另外,我已经尝试了Object.keys ,但是又一次,并没有列出所有的属性。 另外,要清楚我要求的是什么:以下是不允许的:

 var a = Object.getOwnPropertyNames.bind(Object); console.log(a(String)); 

我在问这个,因为我正在玩一些游戏(称为ElevatorJS ),用户在这里写一个JavaScript程序,在受限制的条件下实现某些function。 在这个特定的条件下, getOwnPropertyNames方法被重写并且等于null ,所以我们不允许使用它。 但是,事实certificate,他们已经隐藏了一些非可枚举的属性在String构造函数中作为一个属性,所以我必须以某种方式访问​​它。 另外,它们也覆盖了Object其他方法(如entriesgetOwnPropertyDescriptors等)。

有没有办法做到这一点? 先谢谢你。

你可以使用Reflect.ownKeys(String) ,它会给你所有的参数成员。