在JavaScript中,为什么console.log'这个'绑定的行为与其他原型函数不同?

时间:2018-04-08 21:59:33

标签: javascript node.js

我正在写一个非常简单的函数,一次在多个地方记录一个字符串,其中一个是console.log,另一个使用simple file writer来记录文件。

function doLog(logFuncs, val){
    for(const logFunc of logFuncs)
        logFunc(val);
}

简单文件编写器的.write方法被声明为原型方法:

SimpleFileWriter.prototype.write = function(message, encoding, callback){ }

当踏入时,控制台的.log方法也是如此。

Console.prototype.log = function log(...args) { }

我将其中的每一个传递给doLog

doLog([console.log, myWriter.write], "hello world");

当逐步调试控制台的.log方法时,this会引用Console
当逐步调试SimpleFileWriter的.write方法时,this引用global

我理解为什么global被用作SimpleFileWriter this方法的.write绑定,但我无法理解为什么这个对于控制台的.log

不会发生

为什么会这样?

0 个答案:

没有答案