默认绑定:function函数被调用时,this默认指向全局window对象
隐式绑定:
var girl = {
name:'小红',
height: 170,
weight: 100,
detail:function(){
console.log('姓名:'+this.name);
console.log('身高:'+this.height+'厘米');
console.log('体重:'+this.weight+'斤');
},
}
gril.detail();
this.name =>name =>'小红'
this.height =>height =>'170'
this.weight =>weight =>'100'
调用方法的时候this会有隐式绑定对象里的属性
硬绑定:用call方法绑定this
var girlName = {
name:'小红',
sayName:function(){
console.log('我的女朋友是'+this.name);
},
}
var girl1 = {
name:'小白',
}
var girl2 = {
name:'小黄',
}
girlName.sayName.call(girl1);
girlName.sayName.call(girl2);
如上将this.name改变为小白,小黄
构造函数绑定
function Lover(name){
this.name = name;
this.sayName = function(){
console.log('我的女朋友是'+this.name);
};
}
var name = '小白';
var xiaoHong = new Lover('小红');
xiaoHong.sayName();
this会和实例化对象绑定