在javascript中,我们可以轻松地将函数分配给变量,例如:
a = function(){ alert("hello world");}
b = a;
现在a和b都可以互换使用来生成警报消息。
但是在创建跨浏览器控制台包装器时,我注意到chrome中的一个非常特殊的行为:
x = console.log
现在我用的时候:
x("hello world")
我明白了:
TypeError : Illegal invocation
但是上面的例子在firefox中完全正常。
这与chrome有什么安全相关的问题或者完全不同的东西。在旁注中,是否有一种方法可以获得一个函数,该函数使用调用函数的行号生成输出到浏览器控制台?
答案 0 :(得分:2)
示例中的方法分配会丢失this
上下文。
...试
var x = console.log.bind(console);