首页 >web前端 >js教程 >ES6 中的箭头函数与方法声明:为什么'this”在箭头函数中不能按预期工作?

ES6 中的箭头函数与方法声明:为什么'this”在箭头函数中不能按预期工作?

Linda Hamilton
Linda Hamilton原创
2024-12-15 13:41:09300浏览

Arrow Functions vs. Method Declarations in ES6: Why Doesn't `this` Work as Expected in Arrow Functions?

ES6 中的箭头函数与方法声明

在深入研究 ES6 时,你可能会遇到以下问题:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
};

person.shout(); // Prints "my name is "

目的是让函数访问 person 对象中的 name 属性。然而,控制台只打印“我的名字是。”

解释:

这种行为源于 ES6 中箭头函数的独特性质。与传统函数声明不同,箭头函数不绑定 this 关键字。相反,它们从周围的范围继承 this 绑定,在本例中是全局范围。

解决方案:

要解决此问题,您可以使用 ES6 方法声明模式,它保留了所需的绑定:

var person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name);
  }
};

person.shout(); // Prints "my name is jason"

以上是ES6 中的箭头函数与方法声明:为什么'this”在箭头函数中不能按预期工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn