javascript中的this

this值在JavaScript中也比较关键,不同的场景代表不同的值。理解是关键


全局上下文

this对象直接指向全局对象,在浏览器中也就是window对象。这个比较好理解

函数上下文

在函数中,this对象的情况就比较多了:

1、直接调用函数

this指向window对象,但是在严格模式下,返回undefined

2、当函数作为一个对象的方法来调用的时候

可以看到这个时候的this表示obj对象,代表方法所属的对象。

3、函数作为构造器来直接创建对象,在这种情况下,this代表新建的对象。

构造函数创建的就是一个对象,里面包含name,age,getInfo,那么我们调用方法getInfo就应该知道发生什么了吧。this肯定就向上面的一样,指向所属对象,也就是will

出现apply和call的情况

简单来说这两个函数是干啥使的,很简单,比如你创建了一个对象,你像做某件事情,也就是使用的方法,但是呢,已经有一个对象有这个方法了,你不想再创建,也不想搞什么继承不继承,因为只是想使用一下。怎么办呢。apply和call就出现了,那么两者有区别吗?当然有啦,至少两个名字就不一样,(废话...),其实功能都一样,只是说呢,传递的参数不一样而已。第一个参数都是执行的对象,第二个参数对于apply就是要传递的参数的数组,对于call就是传递多少个就单独列举出来。so easy!

由于第一个this表示window对象,而window对象下面没有count值,为undefined,所以结果为NaN。

接上面的图

这也是一种方法。

上面的做法,并不是说obj对象中就有add方法了,只是借用而已。

this暂存

有时候,未来使用外层的this对象,通常需要对this暂存,通常变量为self,_this,that。

总结:

其实对于this的认识,只要记住一个点,那就是被谁调用,比如函数在全局环境中,直接执行,就是全局环境,被对象调用,那就是指向对象。箭头函数就不是这样了哈记住

资源:

田小计划 JavaScript中的this - 田小计划 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值