これはかなり簡単なようです:
var print = console.log;
print("something"); // Fails with Invalid Calling Object (IE) / Invalid Invocation (Chrome)
うまくいかないのはなぜですか?
これはかなり簡単なようです:
var print = console.log;
print("something"); // Fails with Invalid Calling Object (IE) / Invalid Invocation (Chrome)
うまくいかないのはなぜですか?
グローバルオブジェクトをレシーバーとしてメソッドを呼び出しているため、メソッドは厳密に非ジェネリックでありConsole
、レシーバーとしてのインスタンスを正確に必要とします。
ジェネリック メソッドの例は次のArray.prototype.push
とおりです。
var print = Array.prototype.push;
print(3);
console.log(window[0]) // 3
ただし、次のようなことができます。
var print = function() {
return console.log.apply( console, arguments );
};
また、ES5 は.bind
、上記と同じことを実現します。
var print = console.log.bind( console );