偶然间在掘金上发现一片分享,差点颠覆我js观,我发现我对js中的this指向问题还是存在误解,知其然并不知其所以然!!蓝瘦
记一篇关于this指向的前端随缘心得
分享中虽然反复强调一句话this 永远指向最后调用它的那个对象,
我觉得要是在这样话上在圈三个重点会更好
this 永远指向【最后】【调用】它的那个【对象】
function foo() {
console.log(this.a)
}
function test(fn) {
fn();
}
var a = 20;
var obj = {
a: 10,
getA: foo
}
test(obj.getA);
//so, 最后-调用-对象是哪个?
//显而易见
//test -> fn() -> obj.getA -> console.log(this.a)
//最后是在fn中调用,在找当前的作用域对象,window
//result 20
//这个例子很有意思
var obj = {
a: 20,
getA: function() {
setTimeout(function() {
console.log(this.a)
}, 1000)
}
}
obj.getA();
//resul 为 undefined ???
//现在结合上面那句话,最后-调用?谁调用setTimeout
//最后并不是obj,而是window对象,所以this指向window