当我定义一个对象时,我可以通过使用点字符来达到它的所有属性,这同样适用于内置函数,如String,Array,Math等。
但是我不能通过使用for(# in #
来循环它们。它说String是本机代码,但我仍然可以访问其所有成员,尽管我无法遍历它们。
我知道window
是可迭代的,但他们的子功能是“{1}}。似乎不是。
这是为什么?是否有机会在没有明确键入其名称的情况下调用属性?我可以以某种方式列出所有成员吗?
我知道它看起来并不实用,没有人会在生产中需要它。我问它是因为我不能这样做,我希望有人可以给我一些帮助。
答案 0 :(得分:1)
您只能获取自己(!!!)属性的所有名称
Object.getOwnPropertyNames(YOUR_OBJECT)
这意味着,此方法不会枚举继承的属性。如果你想枚举继承的属性,你可以使用YOUR_OBJECT.__proto__
,但它只适用于Mozilla