Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用CoffeeScript迭代类的静态变量和方法?_Javascript_Coffeescript - Fatal编程技术网

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

Javascript 是否可以使用CoffeeScript迭代类的静态变量和方法?,javascript,coffeescript,Javascript,Coffeescript,使用CoffeeScript,我希望能够迭代类的静态方法和变量。更具体地说,我想访问Math中的所有函数 我正在寻找类似以下功能: for x in Math console.log (x + ": " + Math[x]) 这可能吗?是的,但您需要做的是迭代对象的原型。在CoffeeScript中,它将如下所示: for key, value of MyClass.prototype console.log key, ':', value 编辑: 在JavaScript中是这样

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

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

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

这可能吗?

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

来自上一个
stackoverflow
问题:


你们没有检查,是吗?对不起,伙计们。你说得对。它不起作用,因为Math是本机构造函数。这仅适用于自定义构造函数。看我的编辑。那么,这根本不可能吗?对不起@jeremynealbrown,我不这么认为。我认为原因是这些函数不是正常函数,如果你试图在其他环境中应用它们,它们就不起作用。例如,此行:
console.log(Array.prototype.map)
生成以下结果:
function map(){[native code]}
。该[本机代码]部分意味着该函数不是用JavaScript实现的,因此它很特殊,显然他们不希望您能够用它做其他事情。
Object.getOwnPropertyNames( Math )