为什么我不能分配这样的功能

Fab*_*cio 1 javascript

为什么我不能在javascript中这样做:

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

以及如何实现这一目标?

Que*_*tin 6

在JavaScript中,值this取决于函数的调用方式.

里面log(),thisundefined在严格模式或以其他方式默认对象(这是window在浏览器中).

里面console.log(),thisconsole.

log据推测,该功能取决于对该console对象的访问权限.

您可以编写包装函数:

function log() {
    console.log.apply(console, arguments);
}
Run Code Online (Sandbox Code Playgroud)

足够现代的浏览器中,您可以使用生成该功能bind.

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