javascript - 箭头函数中 "this"的可见性

标签 javascript ecmascript-6 arrow-functions

<分区>

我有两个例子

const test = {
    foo: function (){
        this.bar();
    },
    bar: function (){
        console.log('bar');
    }
}
test.foo();

在这种情况下,一切正常。

const test = {
    foo: () => {
        this.bar();
    },
    bar: () => {
        console.log('bar');
    }
}
test.foo();

在第二种情况下我得到错误:

Uncaught TypeError: Cannot read property 'bar' of undefined

我知道我可以在 foo 函数中编写 test.bar(),但我很感兴趣为什么 this 在箭头函数中不可用在这种情况下的范围。

最佳答案

通常,函数中 this 的值取决于该函数的调用方式。

箭头函数从创建函数的作用域中导入 this 的值。

在对象字面量中间,this 的值将取决于对象字面量周围的内容,但肯定不会是对象本身。

关于javascript - 箭头函数中 "this"的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640154/

相关文章:

javascript - ES6 代码风格最佳实践

javascript - "Good"如何在 React 中更新状态(从之前的值)

javascript - 如何计算小时到分钟?

javascript - 在通用菜单加载完成之前不要继续

javascript - 问题自动重定向到原始脚本/指示器

javascript - 尽管等待 promise ,但 promise 并未同步解决

javascript - 无状态函数式组件需要导入 React 吗?

javascript - 如何使用名称向extjs中的组合框添加颜色

javascript - 是否可以在 typescript 中创建一个命名为 "fat-arrow"的 lambda?

javascript - 如何在 JavaScript 中递归地构建菜单列表对象?