this的五种情况分析
this执行主体,谁把他执行的{和在哪创建和在哪执行都没有必然的关系}
-
函数执行,看方法前面是否有“点”,没有“点”,this是window,严格模式下是undefined,有“点”,“点”前面是谁,this就是谁
let fn = function fn(){
console.log(this);
}
let obj = {
name:‘aa’,
fn:fn
}
fn();
obj.fn(); -
给当前元素的某个事件行为的绑定方法,当事件行为触发,方法中的this是当前元素本身(排除attachEvent)
document.body.addEventListener(‘click’,function(){
console.log(this);})
-
构造函数中的this是当前类的实例
function Factory(){
this.name=“zf”;
this.age = 12;}
let f = new Factory;
-
箭头函数中没有执行主体,所用到的this都是其所处上下文中的this
let demo = {
name:‘demo’,
fn(){
console.log(this);
setTimeout(function(){
console.log(this);
}, 1000);
setTimeout(() =>