Почему вспомогательные методы часто используются в Javascript?
Новое в Javascript, читающее Crockford Javascript: Хорошие детали (между прочим)
В четвертой главе о функциях Крокфорд показывает, как сохранить это во внешней функции для использования во внутренних функциях, что я понимаю.
Мой вопрос в том, что в его примере кода и тонне больше нравится, зачем использовать эту вспомогательную функцию:
myObject.double = function() {
var that = this;
var helper = function () {
that.value = add(that.value, that.value);
}
helper();
};
Возможно, потому, что add() находится в глобальной области видимости, а значение - в myObject, поэтому мне нужно скопировать это (myObject), а затем передать в global, где я могу захватить add()?
В противном случае я не уверен, зачем мне нужна вспомогательная функция?
Ответы
Ответ 1
В этом разделе книги он демонстрирует, что традиционно использовать that
при обращении к объекту this
родительской функции.
Нет необходимости использовать вспомогательную функцию, чтобы делать то, что делает код. Это просто пример, иллюстрирующий, как обойти проблемы с объектом this
.
Ответ 2
Герметизация. helper()
в вашем примере существует только в области myObject.double()
, он не будет доступен/видимым вне его. Я считаю, что он называется private method вместо функции "helper".
Ответ 3
В книге также говорится, что "это связано с неправильным значением".
Является ли "неправильное" значение "this" глобальным объектом?
То, как это делает Крокфорд, делает меня неопределенным. Не мог ли он зафиксировать его более знакомым людям с "классическим" фоном, просто вызвав this.helper(), т.е. Сделать helper() общедоступным методом?
Я бы догадался, да и догадался, что он сделал это так, как он это сделал, чтобы (также) показать обходное решение, которое все еще использует шаблон invokation функции, но хотел бы, чтобы это подтвердилось; будучи новым для javascript, я не уверен, что мои догадки верны.