【发布时间】:2013-10-10 12:25:27
【问题描述】:
使用 CoffeeScript,我希望能够迭代类的静态方法和变量。更具体地说,我想访问Math 中的所有功能。
我正在寻找类似的功能:
for x in Math
console.log (x + ": " + Math[x])
这可能吗?
【问题讨论】:
使用 CoffeeScript,我希望能够迭代类的静态方法和变量。更具体地说,我想访问Math 中的所有功能。
我正在寻找类似的功能:
for x in Math
console.log (x + ": " + Math[x])
这可能吗?
【问题讨论】:
来自之前的stackoverflow 问题:How can I list all the properties of Math object?
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 是一个不好的例子。如果您使用自定义类构造函数,它会正常工作。
【讨论】:
console.log(Array.prototype.map) 产生以下结果:function map() { [native code] }。该 [native code] 部分意味着该函数未在 JavaScript 中实现,因此它很特殊,显然他们不希望您能够用它做其他事情。