Задать вопрос
webinside
@webinside

JavaScript: Вызов функции класса из forEach

Подскажите пожалуйста правильное решение, потому как я делаю мне кажется не верно.
Смысл таков:
function Class() {
// тупое решение
// _this = this;
function F1() {
  arr.forEach(function(elm)  {
 // Как в этом месте вызвать фунцию F2
 // this в данном случае находится внутри foreach
 // можно извращаться через parentы и создании ссылок на родителя
 _this.F2();  		
 }
}
function F2() { ... }
}
  • Вопрос задан
  • 3781 просмотр
Подписаться 2 Оценить 3 комментария
Решения вопроса 1
Zerstoren
@Zerstoren
Вы написали какую-то фигню.

Вот пара простых решений.

1) С использованием bind

function Class() {};

Class.prototype.F1 = function () {
    var self = this;
    arr.forEach(this.F2.bind(this));
};

Class.prototype.F2 = function () {
    // Some actions
};


2) С использованием замыкания и ссылки на контекст this
function Class() {};
Class.prototype.F1 = function () {
    var self = this;
    arr.forEach(function(elm) {
        self.F2();
    });
};

Class.prototype.F2 = function () {
    // Some actions
};


Оба решения - это нормальная практика. 1е решение на читаемость, 2е на скорость работы.

Пишите классы именно через прототип. То что вы написали глупость. А лучше почитайте немного learn javascript, пропуская не нужное.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BuranLcme
@BuranLcme
Если у вас это нативный forEach, то он в качестве второго аргумента может принимать контекст. Т.е. просто
arr.forEach(function(elm){... this.F2(); ... }, this);

Если ненативная функция, то надо смотреть детали ее реализации.
Ответ написан
Комментировать
webinside
@webinside Автор вопроса
Может я действительно перемудрил =)
Праздники дают о себе знать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы