Сохранение ссылки на «this» в Javascript при использовании обратных вызовов и замыканий

Я обнаружил, что назначаю "this" переменной, чтобы я мог легко использовать его в обратных вызовах и замыканиях.

Это плохая практика? Есть ли лучший способ вернуться к исходной функции?

Вот типичный пример.

User.prototype.edit = function(req, res) {

  var self = this,
      db = this.app.db;

  db.User.findById('ABCD', function(err, user)) {

    // I cannot use this.foo(user)
    self.foo(user);
  });
};

User.prototype.foo = function(user) {

};

Вы обычно используете этот подход или нашли более чистое решение?

40
задан andyuk 24 October 2011 в 11:12
поделиться