关于Javascript中this的指向性分析。

本文通过分析代码示例,解释了JavaScript中this关键字在不同场景下的指向:①对象内的this通常指向全局对象;②方法函数中的this指向对象实例;③普通函数内的this指向全局对象;④箭头函数的this遵循词法作用域,指向其外层函数的this。
摘要由CSDN通过智能技术生成

利用下面这段代码分析一下Javascript中this的指向性。参考了用设计模式、this巧妙整理vue中的methods - 掘金 (juejin.cn)

代码分析:

a、test是一个对象,里面定义了属性name和方法函数todo()

b、dowhat()函数和dothis()函数都不是方法函数,

dowhat()是普通函数, dothis()是箭头函数。

下面分析当this分别出现在①②③④位置时,this的指向情况。

①this出现在对象中,如test对象(不知道有没有这种情况??其实还没遇到过^_^):

→因为并不是在test的对象的method函数中,

所以如果直接子test里面调用this.xx的话,

这个this指向全局对象。

②this出现在方法函数中(即this所属的直接父函数是一个method函数)

→如图,因为todo()是方法函数,所以如果在这里调用this.name,

那this指向的是test对象实例。

③this出现在普通函数中(即this所属的直接父函数dowhat()是一个普通函数)

→因为javascritp中普通函数的this默认指向全局对象(javascript的规则),

所以这个this指向全局对象。

(即使这个普通函数是在method函数中定义的也一样!!它只考虑this的直接父函数是method还是普通函数)

④this出现在箭头函数中(即this所属的直接父函数dothis()是一个普通函数)

→因为箭头函数中的this指向的是其父父函数(祖父函数)中的this 指向一致(javascript的规则),所以这个this和其祖父函数todo()中的this指向一样,即test对象实例。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值