console.log(this);
}
fn(); //相当于下面的window.fn();
window.fn();
window调用了fn,所以this指向window
- 对象方法中出现this
let pox={
name:‘小红’,
run:function(){
console.log(this.name)//this
}
}
pox.run();// pox 小红
pox调用的run,所以run方法中的this指向pox
- call() /apply() /bind() 都可以改变this指向
let obj={name:‘小明’}
let pox={
name:‘小红’,
run:function(){
console.log(this.name)
}
}
// 对象方法中的this.指向方法的调用者。
pox.run();// pox 小红
pox.run.call(obj)// 小明
pox.run.apply(obj);// 小明
pox.run.bind(obj)();//小明
相同点:call() /apply() /bind() 都可以改变this指向,指向第一个参数
不同点:bind()需要手动执行