gpt4 book ai didi

javascript - 为什么这段代码会在 "strict mode"中抛出 undefined

转载 作者:行者123 更新时间:2023-11-29 16:11:23 25 4
gpt4 key购买 nike

为什么这段代码会抛出undefined

function Obj() {
this.a = 12;
this.b = "a";
this.privilegedMethod = function () {
this.a++;
privateMethod();
};

function privateMethod() {
this.b = "foo";
console.log(this.b);
}
}

像下面这样调用函数,抛出...在“严格模式”下未定义。

var a = new Obj();
console.log(a.privilegedMethod());

最佳答案

JavaScript 中 this 的值是根据函数的调用方式设置的。这是“上下文”。

当您a.privilegedMethod() 时,您是在a 的“上下文”中调用privilegedMethod()。在内部,该方法 this 将是 a

当您调用 privateMethod() 时,没有“上下文”。在严格模式之外,this 将是 window,但在严格模式下它是 undefined

试试这个:privateMethod.call(this);

关于javascript - 为什么这段代码会在 "strict mode"中抛出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com