Я думаю, что вы ищете jQuery.proxy
:
init: function(el, options) {
if(this.options.auto)
{
// Give `setInterval` a function to call
setInterval(jQuery.proxy(this.autoSwitch, this)), this.options.autoTime);
}
}
jQuery.proxy
гарантирует, что функция вызывается с правильным контекстом (this
значение). Подробнее об этой общей концепции здесь: Вы должны помнить this
Это зависит от jQuery. Если вы хотите более общее решение, вы можете использовать замыкание:
init: function(el, options) {
var context = this; // Remember what `this` is in a variable
if(this.options.auto)
{
// Give `setInterval` a function to call
setInterval(function() {
// The function is a closure that has access to
// `context`, and so we can call it
context.autoSwitch();
}, this.options.autoTime);
}
}
Использует замыкание для привязки контекста (см .: Замыкания не сложны ), что является обычным способом сделать это. jQuery.proxy
просто закрывает кулисы в хорошо контролируемой среде, чтобы вы знали, что оно не закрывает больше данных, чем вы хотите.