Приветствую. Вопрос по
this
. Не знаю принято ли тут такое спрашивать, но все же...
function SomeObject($jq) {
let o = this;
function init() {
$jq.on('xxx.event', function () {
???.some();
// o.some();
});
}
return {
some() {
...
}
}
}
let oSome = new SomeObject($jq);
Как получить доступ к самому объекту (и вызову его методов) из приватного метода init()? Что писать вместо
???.
Тебе не нужно ничего возвращать из функции, если ты ее как конструктор вызываешь (с помощью new), в этом случае интерпретатор сам объект создает, присваивает его в this и возвращает, после того как функция отрабатывает.
Твой код некорректен. В твоем случае объект oSome и this в функции не равны будут, это совершенно два разных объекта. И неудивительно, что ты метод some не можешь вызвать - его просто нет, по крайней мере в том объекте, который в this хранится.
Вот так правильно:
function SomeObject($jq) {
let o = this;
function init() {
$jq.on('xxx.event', function () {
o.some()
});
}
init()
this.some = function() {
}
}
let oSome = new SomeObject($jq)