Дополненный JavaScript жизненный цикл прототипа - PullRequest
3 голосов
/ 06 марта 2009

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

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

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

Спасибо, Дон

Ответы [ 3 ]

5 голосов
/ 06 марта 2009

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

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


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

3 голосов
/ 06 марта 2009

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

0 голосов
/ 06 марта 2009

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

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

...