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

时间:2013-03-13 15:59:52

标签: javascript oop static

我想获得某些类的所有静态成员的列表。例如:我想获得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);
}

静态成员怎么样?

2 个答案:

答案 0 :(得分:3)

你是如何检查他们的?

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

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

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

因此,对你来说,似乎是“公共静态”的东西,实际上只是一个对象的方法,可以像任何其他对象一样进行迭代。

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

答案 1 :(得分:1)

您可以使用Object.keys

Object.keys(MyClass);

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