函数this的指向(箭头函数除外):函数在哪里调用,这个this就指向哪里。
this的指向一般有3种情况:
* 1、内调用函数,this指向
; //Window {...
* 2、通过来调用函数,this指向这个事件的
; //调用者
* 3、对象调用其,this指向这个
;*** //object
* 4、在中的this指向
。
//--- 全局调用
function foo(){
console.log(this);//Window {...
}
foo();
//测试 --- 函数在哪里调用,这个this就指向哪里。& 箭头函数的this指向
var div=document.querySelector(".test");
div.addEventListener("click",function(){
console.log(this);//div
});
//通过箭头函数 this指向window ***
div.addEventListener("click",()=>{
console.log(this);//Window {...
});
//--- 对象调用其方法 ***
var obj={
name:"BGG!",//对象一定要用逗号分隔开,这里的name是对象的属性
skill:function(){
console.log(this);
}
}
obj.skill();//obj{name: "BGG!", skill: ƒ...} -->对象调用其方法,this指向这个对象。
var skr=obj.skill;
skr();//Window {... -->全局调用 被声明了
//--- setTimeout 的this指向
//setTimeout的调用指向window
setTimeout(function(){
console.log(this);//Window {...
},1000);
//上面的 等价于 下面的
window.setTimeout(function(){
console.log("通过widow来调用的定时器",this);//Window {...
},1000);
//--- 构造函数 的this指向
function Fun(){
this.age = "12"
}
var obj = new Fun();
网友评论