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



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

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

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

这可能吗?

来自上一个stackoverflow问题:如何列出 Math 对象的所有属性?

Object.getOwnPropertyNames( Math )

是的,但你需要做的是迭代对象的原型。在 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是一个不好的例子。如果您使用的是自定义类构造函数,它将正常工作。

最新更新