有一个关于在另一个原型函数中调用一个原型功能的问题。
比方说,我有一个基本的滑块,有两个原型函数。
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
});
}
感谢的帮助
如果this.target
是jQuery对象,则将以this
作为DOMNode来调用fadeOut
的回调。
改为:
Slider.prototype.transition = function() {
var me = this;
this.target.fadeOut('normal', function() {
me.setTargets(); // <-- See me
});
}
我已为所有初始化的对this
的引用选择了名称that
me
。我从未将that
me
用于DomNodes等。这对我来说很有意义。
关于这一点的进一步看法,请参阅评论。
编辑:
实际上我用的是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);
fadeOut
函数不会在slider
对象的上下文中调用。
Slider.prototype.transition = function() {
var slider = this;
this.target.fadeOut('normal', function() {
// call setTargets?
slider.setTargets(); // should work now.
});
}