我正在阅读 Nicholas Z.Zakas 的《Web 开发人员专业 JavaScript》第三版,在引用类型章节中,我对函数类型部分感到有点困惑。
function sum(num1, num2){
return num1 + num2;
}
function callSum1(num1, num2){
return sum.apply(this, arguments);
}
alert(callSum1(10,10)); //20
他说:
“在此示例中,callSum1()
执行 sum()
方法,并传入 this
作为 this
值(等于window
,因为它是在全局范围内调用的),并且还传入arguments
对象。 “
我明白他说的是什么,但我不明白为什么。 This
应该指向该函数不是吗?现在我很困惑它指向窗口,因为它是在全局范围内调用的..
有人可以向我解释一下吗? :)
我不确定我以后是否会或者必须使用这个技术,但我想确保我理解它,尤其是这一部分。有关 this
及其用法的更多详细信息将在 OOP 部分中提供,但它现在是一个有趣的问题。
提前致谢!
最佳答案
this
的值取决于您调用函数的方式。
如果您使用 call
或 apply
调用函数,则 this
的值将是该函数的第一个参数。
这里有 sum.apply(this,arguments);
因此它将传递当前值。与往常一样,该值取决于您调用函数的方式。
由于您在没有上下文的情况下调用 callSum1(10,10)
,因此 this
将是 窗口
。
(如果您处于严格模式,它将是未定义
。如果您不在浏览器中,它将是您使用的 JS 环境的默认对象)。
关于javascript - 为什么当调用 apply() 或 call() 时 'this' 指向函数内的 window ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20900194/