gpt4 book ai didi

javascript - 如何更新对象内的 JavaScript this 指针以指向另一个对象?

转载 作者:行者123 更新时间:2023-11-30 07:47:16 27 4
gpt4 key购买 nike

我在使用 JavaScript 以及将一个函数作为另一个函数的参数传递时遇到了一些问题。

假设我们在一个类中并做类似的事情:

this.get('target').update(this.onSuccess, this.onFail);
  • 'target' 是一个 JavaScript 对象,它有一个名为 update() 的方法
  • 我正在调用此方法并将调用者类的两个方法作为参数传递

在该更新方法中会发生一些事情,当它完成时,该方法应该调用 onSuccess 方法或 onFail 方法。这看起来像:

update: function(onSuccess, onFail) {
if(true) {
onSuccess();
} else {
onFail();
}
}

到目前为止,一切正常!但是在调用者类(调用更新方法的类)中定义的那些成功/失败方法中,我使用了这个指针:

onFail: function() {
alert('Error: ' + this.get('target').error);
}

这个指针会导致一些问题。它不指向最初定义方法的类,而是指向“目标”对象。

我现在需要做的是在“目标”类内部的 onSuccess/onFail 调用之前更新 this 指针,以使这些方法再次运行。但由于“左侧分配无效”错误,这不起作用。

对于这种情况,最佳做法是什么?有任何想法吗?提前谢谢!!!

干杯

最佳答案

调用 update() 时有两种选择:

  • javascript 函数 call()
  • javascript 函数apply()

主要区别在于您将参数传递给它的方式。但它们都允许范围/上下文注入(inject)。

您的代码应如下所示:

this.get('target').update.call(this, this.onSuccess, this.onFail);

关于javascript - 如何更新对象内的 JavaScript this 指针以指向另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873067/

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