关于this指向问题。

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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,386评论 2 17
  • 开篇废话是一种情怀 在我们开始学习面向对象之前,首先得先想一个问题,那就是何为对象? 在日常生活中我们有男朋友\女...
    西巴撸阅读 3,443评论 4 3
  • 1. this之谜 在JavaScript中,this是当前执行函数的上下文。因为JavaScript有4种不同的...
    百里少龙阅读 4,633评论 0 3
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 3,666评论 0 2
  • 早上,坐公交,预计公交将要停止的当口,站了很多等待的人,正当大家以为公交会不偏不倚地停止在自己面前时,前面的...
    Sophie七小朵阅读 3,899评论 0 0

友情链接更多精彩内容