JavaScript.call()函数“;这个“;值返回3

JavaScript .call() function "this" value returning 3

本文关键字:返回 这个 call 函数 JavaScript      更新时间:2023-09-26

我在MSDN上读到了JavaScript.call()方法,看到了以下代码:

function callMe(arg1, arg2){
    var s = "";
    s += "this value: " + this;
    s += "<br />";
    for (i in callMe.arguments) {
        s += "arguments: " + callMe.arguments[i];
        s += "<br />";
    }
    return s;
}
document.write("Original function: <br/>");
document.write(callMe(1, 2));
document.write("<br/>");
document.write("Function called with call: <br/>");
document.write(callMe.call(3, 4, 5));
// Output: 
// Original function: 
// this value: [object Window]
// arguments: 1
// arguments: 2
// Function called with call: 
// this value: 3
// arguments: 4
// arguments: 5

根据本文件,我理解.call()的目的是:

调用方法用于代表另一个对象调用一个方法。它允许您从thisObj指定的新对象的原始上下文。

有问题的主要代码是:

document.write(callMe.call(3, 4, 5));

为什么这会返回3作为this值?这怎么是全局对象?

因为.call()的第一个参数是您正在调用的函数中this的值。在您的情况下,这是3