Javascriptでは、Function.call()
は、this
の値と0個以上の引数を指定してFunction
を呼び出すことができます。なぜ私は.call()Function.callできませんか?
自体が機能です。だから理論的には、Function.call
は、同じ(または同様の作用をする)関数Function.call.call
でなければなりません。 V8では
、このケースのようです:私たちはFunction.call()
を呼び出すと
> Function.call === Function.call.call
true
、我々はしかし、私はFunction.call
に.call()
を呼び出すことはできません
> Function.call()
[Function: anonymous]
匿名関数を取得します。
> 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
@nicovankもちろん、私はJavascriptの "what if's"を探していましたが、これは誤って遭遇しました。 :) – Qix
[もちろんできます](http://stackoverflow.com/q/31074664/1048572)! – Bergi