一、this的绑定规则:
1、默认绑定:
function girl(){
console.log(this);
}
girl();
全局调用gir()函数,这里的this,并没有明确指向谁,所以就是默认Window全局对象
2、隐式绑定:
var girl={
name:"小红";
height:"160";
detail:function(){
console.log("姓名:",this.name);
}
}
girl.detail();
这里的this,指向这个girl对象,所以此处的this=girl
3、硬绑定:
注意:call和apply方法,会强制绑定当前传入的对象,而且也不会把原对象给暴露出去
4、构造函数绑定:
Vue中的this指向:
如果一个请求回调假设如下:
handleRequest(){
uni.request({
url:'xxx',
method:'GET',
success(res){
console.log(this) //此时this指向函数本身
}
})
}
//如果要改变tthis指向可以这样:
handleRequest(){
//方法一:
const _this=this
uni.request({
url:'xxx',
method:'GET',
success(res){
console.log(_this) //此时this指向Vue组件
}
})
}
handleRequest(){
uni.request({
url:'xxx',
method:'GET',
//方法二:箭头函数
success:res=>{
console.log(this) //此时this指向Vue组件
}
})
}
要注意的是,当前的this是和哪个实例化的对象绑定,这点很重要!!!
注意:“use strict”,严格模式下,会将this的改成undefined
在全局环境中定义变量,那么这个变量也是属于Window对象的;
总结:谁调用了this,this就指向谁!!
本文根据技术蛋老师视频整理得出,如有错误,欢迎指出~