gpt4 book ai didi

javascript - 有没有办法指定我想在 JS 匿名函数中使用哪个 'this' ,类似于 Java 的做法?

转载 作者:行者123 更新时间:2023-12-02 19:36:27 25 4
gpt4 key购买 nike

我已经遇到过这个问题几次,我想知道是否可以解决这个问题,而不必在父对象的上下文中将 anon 函数绑定(bind)到“this”。

这是我的情况:

我有一个类似数组的对象,我们将其称为“numline”,它实现了“each”方法。它包含在对象的另一个实例中,我们称之为“numtank”。当前的代码如下所示:

function Numtank(numline) {
this.numline = numline;
};
Numtank.prototype.charForElem(elem) {
return "Number: " + elem;
}
Numtank.prototype.toString() {
var str = "";
this.numline.each(function(elem) {
str += this.charForElem(elem); //But 'this' is called in the contex of the 'numline' instance, which dosen't (and shouldn't) have the charForElem class.
});

return str;
}

var tank = new Numtank(arbatraryNumline);
tank.toString(); //Uncaught ReferenceError: charFromElem is not defined in numline

当我问“与 Java 的做法类似”时,我的意思是 Java 如何允许您将类名添加到“this”前面以指定要使用哪个“this”。

是否有办法解决这个问题,而无需将 anonomouns 函数绑定(bind)到此?

最佳答案

通常所做的是保存一个名为self的引用。这是最常见的做法。

Numtank.prototype.toString() {
var self = this, str = "";
this.numline.each(function(elem) {
str += self.charForElem(elem);
});
return str;
}

关于javascript - 有没有办法指定我想在 JS 匿名函数中使用哪个 'this' ,类似于 Java 的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10886764/

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