【发布时间】:2016-05-19 15:43:01
【问题描述】:
当我收到一条我不明白的错误消息时,我正试图解决 https://twitter.com/secoif/status/730207047892017153。运行此代码时出现错误
const fns = [
function () {
console.log(1)
},
function () {
console.log(2)
},
function () {
console.log(3)
}
]
fns.map(Function.prototype.call.bind)
Chrome 告诉我“必须在函数上调用绑定”,我不明白。以下行应该是等效的,但不会引发相同的错误。
fns.map((x) => Function.prototype.call.bind(x))
【问题讨论】:
-
@Tushar 很有趣,但如果原因是 map 传递了两个参数,我不明白为什么
fns.map((x, y) => Function.prototype.call.bind(x, y))会起作用 -
bind未绑定到call。你想改用fns.map(Function.prototype.bind, Function.prototype.call)(或者fns.map(Function.prototype.bind.bind(Function.prototype.call)),如果你愿意的话)
标签: javascript