JS中this指向解析
this的指向方式
根据函数调用的方式不同,this会指向不同的对象
1.以函数的形式调用时,this永远都是window
2.以方法的形式调用时,this就是调用方法的那个对象
全局作用域中this的指向为window
//直接打印
console.log(this);//window
//function声明函数
function bar(){
onsole.log(this)
};
bar();//window
//function声明函数赋给变量
var bar=function(){
console.log(this)
};
bar();
//立即执行函数
(function(){
console.log(this)
})();//window
在方法调用中,谁调用this,this就指向谁
//对象方法调用
var zhang={
sayName:function(){
console.log(this);
}
};
zhang.sayName();//zhang
//事件绑定中
<button>点击</button>
var btn=document.querySelector("button")
btn.onclick=function(){
console.log(this);
}//btn
//jquery的ajax
$.ajax({
self: this,
type: "get",
url: url,
async: true,
success: function (res) {
console.log(this) // this指向传入$.ajxa()中的对象
console.log(self) // window
}
});
在构造函数中使用this
//不使用new调用
function Person(name){
console.log(this)
this.name=name;
}
Person('zhanghan');//window
//使用new调用
function Person1(name){
this.name=name
console.log(this);
}
var han=new Person1('zhang');
console.log(han);//Person1
箭头函数内外层作用域的this
var zhang={
han(){
console.log(this);
},
xiao:()=>{
console.log(this);
}
}
zhang.han();//han:f xiao:f
zhang.xiao();//window