美文网首页
关于this指向问题。

关于this指向问题。

作者: 为君梳作半面妆 | 来源:发表于2017-10-15 12:31 被阅读0次

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这个对象。


相关文章

网友评论

      本文标题:关于this指向问题。

      本文链接:https://www.haomeiwen.com/subject/znizsxtx.html