这似乎应该非常简单:
var print = console.log;
print("something"); // Fails with Invalid Calling Object (IE) / Invalid Invocation (Chrome)
为什么不起作用?
答案 0 :(得分:16)
如果您使用全局对象作为接收器调用该方法,则该方法严格来说是非泛型的,并且只需要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 );