是否可以使用CoffeeScript迭代类的静态变量和方法?

时间:2013-10-03 17:25:13

标签: javascript coffeescript

使用CoffeeScript,我希望能够遍历类的静态方法和变量。更具体地说,我希望能够访问Math中的所有功能。

我正在寻找类似于以下的功能:

for x in Math
    console.log (x + ": " + Math[x])

这可能吗?

2 个答案:

答案 0 :(得分:6)

来自之前的stackoverflow问题:How can I list all the properties of Math object?

Object.getOwnPropertyNames( Math )

答案 1 :(得分:0)

是的,但您需要做的是迭代Object的原型。在CoffeeScript中,它看起来像这样:

for key, value of MyClass.prototype
  console.log key, ':', value

编辑:

在JavaScript中就是这样:

var i;
for (i in MyClass.prototype) {
  // This condition makes sure you only test real members of the object.
  if (Object.prototype.hasOwnProperty.call(MyClass.prototype, i)) {
    console.log(i, ':', MyClass.prototype[i]);
  }
}

编辑2:

有一点需要注意:这不适用于原生JavaScript构造函数,因此Math是一个不好的例子。如果您使用自定义类构造函数,它将正常工作。