Задать вопрос
stDragon
@stDragon
front-end разработчик

Как перестать использовать that?

Стандартная ситуация

//backbone
render: function () {
        var that = this;
        App.TemplateManager.get(this.template, function (template) {
            var temp = _.template(template);
            var html = $(temp(that.model.toJSON()));
            that.$el.html(html);
        });
        return this;
    },

или
//jquery
var that = this;
$.ajax({
    url: '/api/' + id,
    success: function (template) {
        var tmpl = template;
        that.templates[id] = tmpl;
        callback(tmpl);
   }
});

Как избавится от that? я зная что тут надо использовать call/apply/bind, но никак не пойму как правильно...
  • Вопрос задан
  • 617 просмотров
Подписаться 3 Оценить 1 комментарий
Решения вопроса 2
abler98
@abler98
Software Engineer
$.ajax({
    url: '/api/' + id,
    success: function (tmpl) {
        this.templates[id] = tmpl;
        callback(tmpl);
    }.bind(this) // <==
});
Ответ написан
Комментировать
VladimirZhid
@VladimirZhid
Нравится делать что-то интересное и полезное.
Можно только сократить его использование с помощью стрелочных функций

class NewObj{
    constructor(){
        this.some_var = "Some var"
        this.func()
    }
    func(){
        let sub_func = () => {
            console.log(this)
        }
        sub_func()
    }
}

new NewObj();
// В терминале:
// node test.js
// -> NewObj { some_var: 'Some var' }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
  • Arrow function
  • .bind(this)
  • Оператор :: (только в babel)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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