有没有办法指定我想在 JS anon 函数中使用哪个“这个”,类似于 Java 的方式
Is there any way to specify which 'this' I want to use in a JS anon function, similar to how Java does it?
我遇到过几次这个问题,我想知道是否可以在不将 anon 函数绑定到父对象的上下文中的"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 函数绑定到这个?
通常做的是保存一个名为 self
的引用。这是最常见的做法。
Numtank.prototype.toString() {
var self = this, str = "";
this.numline.each(function(elem) {
str += self.charForElem(elem);
});
return str;
}
您可以将
this
的副本保存在另一个变量中。
var oldThis = this;
该变量对这些嵌套回调函数可见。
相关文章:
- 如何以最有效的方式实现这个多维数组
- 如何以正确的方式编写这个jquery on()
- 有人可以解释一下这个变量的声明方式
- 可能是更好的方式来编码这个棘手的切换按钮
- 这个 getter-setter 闭包是否有充分的理由以这种方式在其内部对象中声明它是私有的
- 有没有办法指定我想在 JS anon 函数中使用哪个“这个”,类似于 Java 的方式
- 为什么这个正则表达式不能按照我想要的方式工作
- 这个代码块可以用更短的方式编写吗?
- 是什么导致这个JavaScript代码以它的方式运行
- JavaScript 的这个对象是否以我认为的方式引用新创建的对象
- 用Javascript更好的方式编写这个动画
- 为什么这个JavaScript有两种不同的解释方式
- 我怎么能用正确的oop方式编写这个jquery代码呢
- Javascript”;这个“;作用域根据调用方式给出不同的结果
- 正确的绑定方式“;这个“;在JavaScript事件回调中
- 如何使这个Javascript以不同的方式出现
- 一个更优雅的方式来写这个.地图调用
- 这个JavaScript模式是如何调用的,以及我如何以正确的方式使用它
- 在setTimeout上使用.apply或.call——如何以跨平台的方式获得这个上下文
- 这个问题是什么,以及如何通过jquery自己的方式来防止