this的运用场景有以下几个:
1.函数调用
2.对象的方法调用
3.构造函数调用
4.call和apply调用
一、函数调用
window.word='you are my Mr Right'
function aa(){
console.log(this.word)
}
function bb(){
var word = 'you no my Mr Right'
aa();
}
bb();
运算结果是 you are my Mr Right。
可以看到当作为函数调用时,this指向的是window对象。
二、对象方法调用。
var car = {
name : "BMW",
price : "200000",
showName:function(){
console.log(this.name);
},
showPrice:function(){
console.log(this.price)
}
}
car.showName();
car.showPrice();
运算结果是: BMW 200000
可以看到,当作为对象方法调用时,this指向的是该方法所在对象本身。
三、构造函数调用
构造函数和普通函数一模一样,区别在于调用方式,当用new运算符调用时,函数会返回一个对象,构造器的this指向当前返回的对象。
function Car(){
this.name="baoma",
this.price="20000"
this.showPrice= function(){
console.log(this.price);
}
}
var car = new Car();
car.showPrice();
运算结果是20000.
由此可知,这里的this指的是car这个对象。
四、call 和apply
function Car(){
console.log(this.name);
}
var bmw={
name:"bmw",
showName:function(){
Car.apply(this);
}
}
bmw.showName();
运算后得到:bmw.
这里通过apply(call也可以)强制把this指向了bmw这个对象。