有关于在另一个原型函数中调用一个原型函数的问题。
例如,假设我有一个带有两个原型函数的基本滑块。function Slider() {
}
Slider.prototype.transition = function() {
}
Slider.prototype.setTargets = function() {
}
在转换函数中调用setTargets函数的正确方法是什么,如下所示:
Slider.prototype.transition = function() {
this.target.fadeOut('normal', function() {
// call setTargets?
this.setTargets(); // errors when i do this
});
}
感谢您的帮助
答案 0 :(得分:1)
如果this.target
是jQuery对象,则fadeOut
的回调将以this
作为DOMNode进行调用。
请改为:
Slider.prototype.transition = function() {
var me = this;
this.target.fadeOut('normal', function() {
me.setTargets(); // <-- See me
});
}
我为that
的所有初始化引用选择了名称 me
this
。我从未使用 that
me
代替DomNodes,等等。对我来说。
关于这一点,请参阅有关未来观点的评论。
修改强>
Acually我用me
而不是that
- 不知道我在想什么? !
评论:
Slider.prototype.transition = function() {
var me = this;
this.target.fadeOut('normal', function() {
var domThis = this;
me.setTargets(); // <-- See me
setTimeout(function() {
// Use domThis [Dom Node]
}, 123);
});
}
或者:
您可以创建一个jQuery对象:
var $this = $(this);
me.setTargets(); // <-- See me
setTimeout(function() {
// Use $this [jQuery Object]
}, 123);
如果你需要这个jQuery对象,你可以参考:me.target
me.setTargets(); // <-- See me
setTimeout(function() {
// Use me.target [jQuery Object]
}, 123);
答案 1 :(得分:0)
fadeOut
函数不会在slider
对象的上下文中调用。
Slider.prototype.transition = function() {
var slider = this;
this.target.fadeOut('normal', function() {
// call setTargets?
slider.setTargets(); // should work now.
});
}