Chromeでは、次のようにUncaught TypeErrorが生成されます。呼び出しが不正です:
g = console.log;
g(1);
なぜこれが起こるのですか、そしてなぜ私console.logは通常のオブジェクトのように扱うことができないのですか?
Chromeでは、次のようにUncaught TypeErrorが生成されます。呼び出しが不正です:
g = console.log;
g(1);
なぜこれが起こるのですか、そしてなぜ私console.logは通常のオブジェクトのように扱うことができないのですか?
への参照を失ったために発生しますconsole。logコンテキストなしで、直接呼び出しているだけです。のコンテキストで関数を呼び出して、機能させることができますconsole。
g.call(console, 1);
または、毎回それを行う手間を省くために、関数をconsoleオブジェクトにバインドし直すことができます。
var g = console.log.bind(console);
参考文献:
Function.prototype.callFunction.prototype.apply(ここでは使用しませんが、それでも興味深い)Function.prototype.bind