gpt4 book ai didi

javascript - 在附加到对象属性的 javascript 函数中使用 'this'

转载 作者:行者123 更新时间:2023-12-02 23:24:47 24 4
gpt4 key购买 nike

编辑:被称为重复的问题并没有真正回答为什么不应该使用箭头函数来访问非词法 this。它只是回答箭头函数自动绑定(bind) this 。我的情况是,使用箭头函数而不是普通函数会导致我失去正确的引用。如果您需要this在当前范围之外,使用普通函数。

我四处寻找问题的解决方案,但没有成功。即使我被指出了正确的方向,知道我需要做什么,那就太棒了!我的问题本质上是 this.Favkey此处未定义:

const setFavorite = val => {
console.log(this);
this.Favorite = val;
AsyncStorage.setItem(this.Favkey, JSON.stringify(val));
};

这个函数被分配给一个特定的对象,如下所示:

  for (const obj of objArray) {
obj.Favkey = `c${obj['-id=']}`;
obj.Favorite = await getFavorite(obj.Favkey);
obj.SetFavorite = setFavorite;
}

然后我稍后会在按钮上调用它:

onPress={val => props.myObj.SetFavorite(val)}

在第一段代码中,我想要 this具体obj我正在尝试将函数包含在其中。但是this.FavkeysetFavorite未定义。 console.log(this) 上打印出的内容就是我认为的Object的整个原型(prototype)。所以我不太确定我在这里做错了什么。

最佳答案

不要使用箭头函数 - 它会丢失与您要访问的 this 的绑定(bind)。只需使用普通函数即可:

const setFavorite = function(val) {...};

关于javascript - 在附加到对象属性的 javascript 函数中使用 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56783350/

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