gpt4 book ai didi

javascript - 该值不引用当前作用域,而是引用 ES6 箭头样式函数中的父作用域

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:56 24 4
gpt4 key购买 nike

我对 ES6 不太陌生,但对 Node js 不太陌生,但这看起来有点奇怪,因为当我开始使用箭头样式函数而不是 function() 样式时,我假设两者完全相同,但语法不同。但今天才知道这个案子。

当我定义这样的函数时。

exports.intent = {
greetings: {
matcher: ["hi", "hello"],
reply: function(){
console.log(this); // it prints {greetings: {..}} expected
return this.matcher[0]; // returns "hi" which is expected.
}
}
}

但是当我以箭头样式定义相同的函数时,它会抛出错误,因为这里现在引用整个对象而不是当前对象。

exports.intent = {
greetings: {
matcher: ["hi", "hello"],
reply: () => {
console.log(this); // it prints whole object {intent: {....}}
return this.matcher[0]; // fail here.
}
}
}

我发现这两种类型的声明之间的引用存在一些变化。 https://stackoverflow.com/a/40498293/2754029

有什么方法可以让我仅将其引用到当前对象吗?

最佳答案

没有。您将无法在箭头函数体内重写 this。即使你尝试绑定(bind)它,它也不起作用。 This one这是我最近看到的一篇有趣的文章。

关于javascript - 该值不引用当前作用域,而是引用 ES6 箭头样式函数中的父作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48162463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com