Moz*_*zak 6 javascript google-chrome
我对此感到困惑.请找到如下代码.
var o={
printToConsole: function(f){
f(1);
}
};
o.printToConsole(console.log);
Run Code Online (Sandbox Code Playgroud)
//TypeError: Illegal invocation//我得到一个TypeError
从console.log的定义我们得到了这个
`function log() { [native code] }`
Run Code Online (Sandbox Code Playgroud)
在chrome中,它清楚地显示它不需要任何参数,但是当我们尝试在控制台上打印东西时,我们会这样写,即将参数传递给console.log.
console.log('Take me on Console');
Run Code Online (Sandbox Code Playgroud)
为什么我得到这个TypeError以及这个console.log在chrome中的行为?
Den*_*ret 12
更改
o.printToConsole(console.log);
Run Code Online (Sandbox Code Playgroud)
至
o.printToConsole(console.log.bind(console));
Run Code Online (Sandbox Code Playgroud)
要么
o.printToConsole(function(){ console.log.apply(console.log, arguments) });
Run Code Online (Sandbox Code Playgroud)
该console.log函数仅在接收器(this)是控制台时才起作用(实际上,它取决于浏览器).
| 归档时间: |
|
| 查看次数: |
1794 次 |
| 最近记录: |