提问人:Saro Vilhelm Yekanian 提问时间:2/7/2021 更新时间:2/7/2021 访问量:26
调用 this.prop 时,与直接调用 [duplicate] 时的情况不同
when calling this.prop, it behaves different compared to the situation when it is called directly [duplicate]
问:
这个问题在这里已经有答案了:
如何在回调中访问正确的“this” (15 个答案)
“this”关键字是如何工作的,何时应该使用? (22 个答案)
箭头函数和这个 [重复] (5 答案)
2年前关闭。
我试图以箭头函数的方式理解它与普通函数之间的区别。然而,每次我似乎有了这个想法,都缺少一些东西,所以我开始稍微清洁一下空气,并发现了这一点,在编码了一段时间后,我得到了这个区别。
class Func {
constructor(name) {
this.prop = name;
}
arrowLogger(){
let self = (() => {
return this.prop;
})();
console.log(self);
}
simpleLogger(){
console.log(this.prop);
}
}
let example = new Func(1);
global.prop = 2;
console.log(example.arrowLogger());
console.log(example.simpleLogger())
为什么 2 个控制台 .log 打印相同的数字?
为什么下面的答案不一样?
class Func {
constructor(name) {
this.prop = name;
}
arrowLogger(){
setTimeout(() => {
console.log("arrow this:")
console.log(this)
console.log("arrow:",this.prop);
}, 0)
}
simpleLogger(){
setTimeout( function (){
console.log("simple this:")
console.log(this)
console.log("simple:" , this.prop)
} , 0)
}
}
let example = new Func(1);
global.prop = 2;
console.log(example.arrowLogger());
console.log(example.simpleLogger())
P.S. 我在 Node.js 中写这篇文章时使用了<>。
答: 暂无答案
评论
1
this
arrowLogger
example
arrowLogger
example.arrowLogger()
this.prop
example.prop
1
this
this
this
arrowLogger
this = example
simpleLogger
this
globalThis
global