Подтвердить что ты не робот

Почему вспомогательные методы часто используются в 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()?

В противном случае я не уверен, зачем мне нужна вспомогательная функция?

4b9b3361

Ответ 1

В этом разделе книги он демонстрирует, что традиционно использовать that при обращении к объекту this родительской функции.

Нет необходимости использовать вспомогательную функцию, чтобы делать то, что делает код. Это просто пример, иллюстрирующий, как обойти проблемы с объектом this.

Ответ 2

Герметизация. helper() в вашем примере существует только в области myObject.double(), он не будет доступен/видимым вне его. Я считаю, что он называется private method вместо функции "helper".

Ответ 3

В книге также говорится, что "это связано с неправильным значением". Является ли "неправильное" значение "this" глобальным объектом? То, как это делает Крокфорд, делает меня неопределенным. Не мог ли он зафиксировать его более знакомым людям с "классическим" фоном, просто вызвав this.helper(), т.е. Сделать helper() общедоступным методом? Я бы догадался, да и догадался, что он сделал это так, как он это сделал, чтобы (также) показать обходное решение, которое все еще использует шаблон invokation функции, но хотел бы, чтобы это подтвердилось; будучи новым для javascript, я не уверен, что мои догадки верны.