4

我想获取某个类的所有静态成员的列表。例如:我想获取所有的静态成员Object(比如Object.createif avalible 等等)。我怎样才能做到这一点?

例子:

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

所以,如果我有更多的静态成员,我想至少得到他们的名字。在这个例子中,我想得到alertNameand doSomething。对于公共成员,您可以执行以下操作:

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

静态成员怎么样?

4

2 回答 2

5

你是如何检查它们的?

为什么你不能只使用相同的迭代器来完成你的实际课程?

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

这不是你的日常语言。
实际上,JS 中的所有内容都是一个对象,包括函数/构造函数。

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

另外:原型设计是公共静态的。
如果您将属性原型化到您的实例中,那么所有实例都会引用该完全相同的属性,并且对该属性的修改将更改其他所有人的引用。

于 2013-03-13T16:59:29.890 回答
2

您可以使用Object.keys

Object.keys(MyClass);

这将为您提供所需的所有静态属性。此外,您不需要检查继承的属性。

于 2019-10-24T13:58:45.530 回答