caetus, that, _this, self, scope и т.д. – плохие названия.
Что мешает дать ссылке на this нормальное имя, такое, как если бы это была внешняя ссылка?
function Model() {}
Model.prototype.fetch = function () {
var model = this;
…
xhr.onload = function () {
…
model.data = JSON.parse(xhr.responseText);
…
};
};
function View() {}
View.prototype.render = function (root) {
var view = this;
…
window.requestAnimationFrame(function () {
var html = view.template(view.model.data);
root.insertAdjacentHTML('beforeend', html);
});
};
that годится только для абстрактных примеров. Со всеми этими .call(this)/.bind(this) рефакторинг превратится в ад, когда тебе очередную часть кода нужно будет сделать асинхронной. Гоняться за миллисекундами стоит, если у тебя этот код выполняется действительно много раз, как в синтетических тестах.
В идеальном мире все проекты, с которыми сталкиваешься, начинаешь писать сам, и все коллеги знают ES6, жаль мы не в таком мире.