4

重複の可能性:
Javascriptにファーストクラスの関数がある場合、なぜこれが機能しないのですか?

Chromeでは、次のようにUncaught TypeErrorが生成されます。呼び出しが不正です:

g = console.log;
g(1);

なぜこれが起こるのですか、そしてなぜ私console.logは通常のオブジェクトのように扱うことができないのですか?

4

1 に答える 1

8

への参照を失ったために発生しますconsolelogコンテキストなしで、直接呼び出しているだけです。のコンテキストで関数を呼び出して、機能させることができますconsole

g.call(console, 1);

または、毎回それを行う手間を省くために、関数をconsoleオブジェクトにバインドし直すことができます。

var g = console.log.bind(console);

参考文献

于 2012-10-26T17:09:47.523 に答える