javascript - 箭头函数中的“this”与对象文字中的非箭头函数

标签 javascript ecmascript-6

<分区>

在下面的代码中,在 obj1 的对象字面量中,我假设两个函数中的“this”都指向 obj1,但在粗箭头函数中,它不是。有人可以解释为什么吗?我会假设这些函数是等价的,或者在粗箭头函数中,“this”在词法上被定义为 obj1。

var obj1 = {
  name : 'name1',

  standardFunction : function() {
    console.log(this.name);        //  Refers to obj1
  },

  fatArrowFunction : () => {       //  Refers to the global object
    console.log(this.name);        
  }
}

obj1.standardFunction();
obj1.fatArrowFunction();

最佳答案

根据定义,箭头函数的行为与传统函数不同。使用 () => {} 语法定义的函数从外部作用域继承上下文。

关于javascript - 箭头函数中的“this”与对象文字中的非箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45946931/

相关文章:

javascript - 如何打开页面并滚动到特定位置

javascript - 如何使用纯 JavaScript 和 HTML5 创建客户端全文搜索引擎?

javascript - 使用 ES6 将参数传递给 React 组件

javascript - 现在使用 async/await 安全吗?

javascript - handlebars.js 不在 IE9 中渲染模板

javascript - 如何将我的幻灯片菜单放回左侧并隐藏在开头?

javascript - 使用 useState 的函数之间状态不持久

javascript - ES6 模板文字 : How to pass a scope before they are interpreted?

javascript - AngularJS 1.6 + ES6 - $doCheck 被调用两次

javascript - 为什么 ES6 Symbol 属性可以被 Object.defineProperty 枚举?