老师听不懂啊

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕然然 2021-09-27 17:09:23

同学你好,这段代码涉及了两个上下文规则,需要一个一个来看:

1、首先来看obj1对象中的属性b,属性b的值为fun函数的返回结果【b:fun()】,在fun函数中 return this.a + this.b 表示函数的返回结果为:this.a + this.b 的和

此时fun函数是以圆括号的形式调用的【即fun(),此为规则2】,所以fun函数中的this指向window对象,this.a和this.b是window对象的属性a和属性b,如图

https://img1.sycdn.imooc.com//climg/615185e5091cea6814470553.jpg

2、经过第一步之后,obj1对象变为如下:

https://img1.sycdn.imooc.com//climg/6151866a09b081a106730452.jpg

然后执行var result = obj1.fun(),表示调用obj1对象中的fun函数,并把返回结果存放到变量result中。

此时fun函数的调用方式为:对象打点调用它的方法函数【即obj1.fun(),此为规则1】,所以fun函数的上下文(this)是这个打点的对象,即obj1对象,fun函数中的this.a和this.b也是obj1对象的属性,如图

https://img1.sycdn.imooc.com//climg/6151897d099c7ef212130555.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师