【发布时间】:2016-11-30 09:40:08
【问题描述】:
在 Javascript 中,Function.call() 可以在给定 this 值和零个或多个参数的情况下调用 Function。
Function.call 本身就是一个函数。所以理论上,Function.call 应该与Function.call.call 具有相同(或类似作用)的功能。
在 V8 中,似乎是这样的:
> Function.call === Function.call.call
true
当我们调用Function.call()时,我们得到一个匿名函数
> Function.call()
[Function: anonymous]
但是,我无法在Function.call 上拨打.call()。
> Function.call.call()
TypeError: undefined is not a function
at repl:1:21
at REPLServer.defaultEval (repl.js:132:27)
at bound (domain.js:291:14)
at REPLServer.runBound [as eval] (domain.js:304:12)
at REPLServer.<anonymous> (repl.js:279:12)
at REPLServer.emit (events.js:107:17)
at REPLServer.Interface._onLine (readline.js:214:10)
at REPLServer.Interface._line (readline.js:553:8)
at REPLServer.Interface._ttyWrite (readline.js:830:14)
at ReadStream.onkeypress (readline.js:109:10)
这里发生了什么? Function.call 显然是一个函数 - 它不是此错误消息所暗示的 undefined。
【问题讨论】:
-
很好的问题和答案,即使在正常的编程环境中毫无意义:)
-
@nicovank 当然,但是我正在探索一些 Javascript 的“假设”,并且偶然遇到了这个问题。 :)
-
@Bergi 如果你传入
this值,当然可以。混乱源于错误消息。
标签: javascript call