Вызов функции-прототипа наследования Javascript
Есть вопрос о вызове одной функции-прототипа в другой функции-прототипе.
например, допустим, у меня есть базовый слайдер с двумя функциями-прототипами.
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
});
}
Спасибо за помощь
2 ответа
Если 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
для доменных узлов и т. д. имеет смысл для меня.
Пожалуйста, смотрите комментарии для дальнейших взглядов по этому вопросу.
РЕДАКТИРОВАТЬ:
На самом деле я использовал 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.
});
}