Что такое $$ (знак двойного доллара), используемый в angular?

Я рассматриваю исходный код angular 1.2, и мне просто интересно, почему некоторые функции имеют префикс двух знака доллара. Это какая-то конвенция?

Ответ 1

  • Одиночный $ для зарезервированных, общедоступных идентификаторов
  • Двойной $$ для зарезервированных частных идентификаторов

Чтобы процитировать docs:

$Соглашение о присвоении имен префиксов

...

Если вы проверите область действия, вы также можете заметить некоторые свойства, начинающиеся с $$. Эти свойства считаются закрытыми и не должны быть доступны или изменены.

Ответ 2

Если я могу добавить:

Angularjs Docs

Помимо того, что они являются значимыми для Angularjs, "$$" или "$" являются просто символами, допускаемыми в именах переменных. Angularjs использует как для определения значимости для вас, так и для собственной команды разработчиков.

Вы можете назвать все свои переменные одинаковым образом; но чтобы избежать именования столкновений, избегайте этой практики. Вот несколько примеров, если вы сделали...

$$$$myVariableName; $myVariableName$; _myVariableName_; $$$$$$myVariableName$$$$$$$$

Вот ссылка, чтобы проверить имена переменных JS, если хотите:

Валидатор имен переменных

Здесь также указана ссылка на MDN, которая объясняет допустимые символы:

Ссылка на MDN-символы

и вот текст:

Переменные

Вы используете переменные как символические имена для значений в приложении.     Имена переменных, называемых идентификаторами, соответствуют определенным правилам.

Идентификатор JavaScript должен начинаться с буквы, подчеркивания (_) или знака доллара ($);     последующие символы также могут быть цифрами (0-9). Поскольку JavaScript чувствителен к регистру,     буквы включают символы "A" через "Z" (верхний регистр) и символы "a" - "z",     (В нижнем регистре).

Начиная с JavaScript 1.5, вы можете использовать буквы ISO 8859-1 или Unicode, такие как å и ü     в идентификаторах. Вы также можете использовать escape-последовательности Unixode\uXXXX как символы в идентификаторах.

Некоторые примеры юридических имен - Number_hits, temp99 и _name.

Angulajs включает в себя довольно много информации в каждом объекте; некоторые из них относятся к Angularjs, а некоторые для разработчика, а это значит, что некоторые из них могут быть недоступны для редактирования, но все они должны быть доступны для справки, если это то, что вы собираетесь использовать для этого.

Однако в будущих выпусках любые частные идентификаторы могут исчезнуть, поскольку команда Angularjs ожидает, что разработчик не будет использовать зарезервированные/частные имена.

В случае опубликованной "аналогичной ссылки" вот что говорит Angularjs:

$Соглашение о присвоении имен префиксов     Вы можете создавать свои собственные услуги, и на самом деле мы сделаем именно это на шаге 11.     Как соглашение об именах, Angular встроенные службы, методы Scope и несколько других     Angular API имеют префикс $перед именем.

Префикс $существует в пространстве имен Angular -provided. Чтобы предотвратить столкновения     лучше не называть свои услуги и моделировать все, что начинается с $.

Если вы проверите область действия, вы также можете заметить некоторые свойства, начинающиеся с $$.     Эти свойства считаются закрытыми и не должны быть доступны или изменены.