总结点:
1. 所有的this关键字,在函数运行时,才能确定它的指向
2. this所在的函数由哪个对象调用,this就会指向谁
3. 当函数执行时,没有明确的调用对象时,则this指向window
出现场景总结:
- 浏览器环境中,全局this指向window
- 普通函数中,this指向window
- 定时器函数中,this指向window
- 对象方法中,this指向实例对象
- 构造函数中,this指向实例对象
- 事件处理函数中,this指向事件源
- 箭头函数中,没有this;如果使用this,则把this当做普通变量对待,然后按作用域去查找即可
如何判断箭头函数的this?
因为箭头函数不具备自己的this,所以非常简单,假装它不存在,就像这样:
var obj = {
show: function(){
setTimeout(()=> {
console.log(this);
},0),
}
}
这下this的指向非常清晰了吧
- 箭头函数可以用call来改变this指向吗?
不能!! 试图改变箭头函数的this是徒劳的。
var fn = () => {
console.log(this);
}
fn.call(document); // 依然打印window
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。