console.log是常规对象吗?

gar*_*ois 4 javascript console.log

可能重复:
如果Javascript具有一流的功能,为什么这不起作用?

在Chrome中,以下内容会产生Uncaught TypeError:非法调用:

g = console.log;
g(1);
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,为什么我不能console.log像常规对象那样对待?

Jam*_*ice 8

它发生是因为你丢失了对它的引用console.你只是log直接打电话,没有上下文.您可以在上下文中调用该函数console以使其工作:

g.call(console, 1);
Run Code Online (Sandbox Code Playgroud)

或者,为了避免每次都这样做,您可以将函数绑定回console对象:

var g = console.log.bind(console);
Run Code Online (Sandbox Code Playgroud)

参考文献: