如何在javascript中获取某个类的所有静态成员的列表

问题描述 投票:2回答:2

我想获取某个类的所有静态成员的列表。例如:我想获取Object的所有静态成员(如Object.create可用,依此类推)。我该怎么办?

示例:

var ClassA = function(){}
ClassA.prototype.getName = function(){return "ClassA";} //public method
ClassA.alertName = function(){ alert("ClassA");} //static method
ClassA.doSomething = function(){return "Do something";} //another static method

因此,如果我有更多的静态成员,我希望至少获得它们的名称。在此示例中,我想获取alertNamedoSomething。通过公共成员,您可以执行以下操作:

for (i in ClassA.prototype) {
    alert(i);
}

静态成员如何?

javascript oop static
2个回答
3
投票

您如何检查它们?

为什么您不能只使用相同的迭代器来遍历您的实际类?

var key = "";
for (key in MyClass) { console.log(key); }

这不是您每天使用的语言。实际上,JS中的所有内容都是一个对象,包括函数/构造函数。

因此,在您看来,这里的“公共静态”实际上只是一个对象的方法,可以像其他任何对象一样通过它进行迭代。

也:原型制作是公共静态的。如果将属性原型创建到实例中,则所有实例均具有对该完全相同属性的引用,对该属性的修改将更改其他所有人的引用。


1
投票

您可以使用Object.keys

Object.keys(MyClass);

这将为您提供任何所需的静态属性。另外,您无需检查继承的属性。

© www.soinside.com 2019 - 2024. All rights reserved.