三、箭头函数this指向(2021/4/23)
发布日期:2021-05-07 05:40:56 浏览次数:24 分类:技术文章

本文共 844 字,大约阅读时间需要 2 分钟。

  • 箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。
  • 箭头函数中,this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数

箭头函数体内的this对象,就是定义该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。

var name = 'window'; var A = {      name: 'A',   sayHello: () => {         console.log(this.name)   }}A.sayHello();// 输出的是window
  • 一开始,我重点标注了“该函数所在的作用域指向的对象”,作用域是指函数内部,这里的箭头函数,也就是sayHello,所在的作用域其实是最外层的js环境,因为没有其他函数包裹;然后最外层的js环境指向的对象是winodw对象,所以这里的this指向的是window对象。
var name = 'window'; var A = {      name: 'A',   sayHello: function(){         var s = () => console.log(this.name)      return s//返回箭头函数s   }}var sayHello = A.sayHello();sayHello();// 输出A var B = {      name: 'B';}sayHello.call(B); //还是AsayHello.call(); //还是A

OK,这样就做到了永远指向A对象了,我们再根据“该函数所在的作用域指向的对象”来分析一下:

  • 该函数所在的作用域:箭头函数s 所在的作用域是sayHello,因为sayHello是一个函数。
  • 作用域指向的对象:A.sayHello指向的对象是A。
上一篇:四、js的深浅拷贝(2021/4/24)
下一篇:二、js-this指向(2021/4/23)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月24日 01时54分52秒