箭头函数和 this指向

 我来答
机器1718
2022-07-04 · TA获得超过6843个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:162万
展开全部

上图中 outer 是在变量环境里面的,为了方便看

全局执行上下文中的 this:

函数中的this:

那能不能设置执行上下文中的 this 来指向其他对象呢? 肯定是可以的

1、通过函数的 call 方法设置:

2、通过对象调用方法设置:

3. 通过构造函数中设置:

嵌套函数中的 this 不会从外层函数中继承

那怎么实现 bar 的this指向外层 myObj 呢?

本质是把 this 体系转换为了作用域的体系 。也可以使用 ES6 中的箭头函数来解决这个问题

因为 ES6 中的箭头函数并不会创建其自身的执行上下文,所以箭头函数中的 this 取决于它的外部函数

1、this 指向不同:

①:函数.call(对象,arg1,arg2....)
②:函数.apply(对象,[arg1,arg2,...])
③:var ss=函数.bind(对象,arg1,arg2,....)

2、箭头函数没有原型,

3、箭头函数不能绑定arguments,取而代之用rest参数...解决

4、箭头函数是匿名函数,不能作为构造函数,不能使用new

5、箭头函数不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。

6、 函数体内的this对象(继承的),就是定义时所在的对象,而不是使用时所在的对象。

如何实现 call 和apply?

bind的实现原理比call和apply要复杂一些,bind中需要考虑一些复杂的边界条件。bind后的函数会返回一个函数,而这个函数也可能被用来实例化:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式