Жизненный цикл расширенного прототипа JavaScript

StackOverflow https://stackoverflow.com/questions/617422

  •  03-07-2019
  •  | 
  •  

Вопрос

Если я хочу добавить метод isEmpty ко всем массивам JavaScript, я бы использовал следующий код

Array.prototype.isEmpty = function() {
  return this.length == 0;
}

Предположим, что этот код находится в файле foo.js .Если я хочу, чтобы isEmpty был доступен на всех страницах веб-сайта, нужно ли мне включать foo.js во все HTML-файлы?Другими словами, "сбрасываются" ли прототипы всякий раз, когда пользователь переходит на другую страницу?

Спасибо, Дон

Это было полезно?

Решение

Да, вам нужно будет включать свой код при каждой загрузке страницы.

Думайте о каждой загрузке страницы как о цикле компиляции / компоновки.Все различные фрагменты Javascript на странице связаны друг с другом1 а затем выполняется как одна гигантская программа.При следующей загрузке страницы объекты Javascript по умолчанию запускаются в новом состоянии.


1.Связанные вместе безмозглым способом "каждый фрагмент кода использует одно и то же глобальное пространство имен"

Другие советы

Да, вам придется изменять прототип после загрузки каждой страницы

да, http не имеет состояния, поэтому каждая страница загружается отдельно.

однако добавление в Array.prototype - не очень хорошая идея.это означает, что если вы попытаетесь обойти это, то можете нарваться на неприятности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top