这看起来应该非常简单:
var print = console.log;
print("something"); // Fails with Invalid Calling Object (IE) / Invalid Invocation (Chrome)
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?
Esa*_*ija 17
因为你使用全局对象作为接收器调用方法,而该方法严格来说是非泛型的,并且只需要一个Console接收器实例.
泛型方法的一个例子是Array.prototype.push:
var print = Array.prototype.push;
print(3);
console.log(window[0]) // 3
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var print = function() {
return console.log.apply( console, arguments );
};
Run Code Online (Sandbox Code Playgroud)
而ES5 .bind也提供了与上述相同的功能:
var print = console.log.bind( console );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |