当我想将一组数字映射到字符串时,我可以这样做:
[1,2,3,4].map(function(n){return n.toString();})
如果我这样做,我认为会得到相同的结果:
[1,2,3,4].map(Number.toString.call)
但事实并非如此。
为什么呢?它应该不起作用吗?
我现实生活中的问题是我有一系列网络工作者,我想通过这样做来终止它们:
webworkers.forEach(Worker.prototype.terminate.call);
答案 0 :(得分:2)
您可以这样做:
[1,2,3,4].map(String)
String(1)
返回"1"
。
答案 1 :(得分:1)
实际上,要使function.call
生效,您还需要将 thisArg 作为上下文提供给function.call
。
来自MDN:
如果为forEach提供了thisArg参数,则在调用时它将被传递给回调,以用作其值。否则,将传递未定义的值以用作其此值。
试试这个:
webworkers.forEach(Worker.prototype.terminate.call, Worker.prototype.terminate);