可能重复:
If Javascript has first-class functions, why doesn’t this work?
在Chrome中,以下内容会产生 Uncaught TypeError:非法调用:
g = console.log;
g(1);
为什么会发生这种情况,为什么我不能像常规对象那样对待console.log
?
答案 0 :(得分:8)
这是因为您丢失了对console
的引用。你只是直接调用log
,没有上下文。您可以在console
的上下文中调用该函数以使其正常工作:
g.call(console, 1);
或者,为了避免每次都这样做,您可以将函数绑定回console
对象:
var g = console.log.bind(console);
<强>参考强>: