1.普通函数的this指向window;
function fn(){console.log(this)}
fn()
2.普通对象的this指向window;
3.箭头函数的this是继承外面的环境;
let obj1={
a:111,
fn:function(){
alert(this);
}
}
obj1.fn();
//对象里面的普通函数的this指向调用函数的对象,指向obj1;
let obj1={
a:111,
fn:function(){
setTimeout(()=>{
alert(this);
});
}
}
obj1.fn();
//箭头函数因为继承外面的环境,所以这里的this同样指向obj1;
let obj1={
a:111,
fn: () => {
setTimeout(()=>{
alert(this);
});
}
}
obj1.fn();
//箭头函数是继承外面的环境,只要遇到箭头函数就要再往它的上一层找被调用的对象,所以这里的this指向调用obj1的对象,即window;
4. call 和 apply 两个主要用途就是
1)改变 this 的指向(把 this 从对象2 指向到对象1 )
2)方法借用( 对象1没有 fn ,只是借用 对象2 方法)