Я рассматриваю исходный код angular 1.2, и мне просто интересно, почему некоторые функции имеют префикс двух знака доллара. Это какая-то конвенция?
Что такое $$ (знак двойного доллара), используемый в angular?
Ответ 1
- Одиночный
$
для зарезервированных, общедоступных идентификаторов - Двойной
$$
для зарезервированных частных идентификаторов
Чтобы процитировать docs:
$Соглашение о присвоении имен префиксов
...
Если вы проверите область действия, вы также можете заметить некоторые свойства, начинающиеся с $$. Эти свойства считаются закрытыми и не должны быть доступны или изменены.
Ответ 2
Если я могу добавить:
Помимо того, что они являются значимыми для Angularjs, "$$" или "$" являются просто символами, допускаемыми в именах переменных. Angularjs использует как для определения значимости для вас, так и для собственной команды разработчиков.
Вы можете назвать все свои переменные одинаковым образом; но чтобы избежать именования столкновений, избегайте этой практики. Вот несколько примеров, если вы сделали...
$$$$myVariableName; $myVariableName$; _myVariableName_; $$$$$$myVariableName$$$$$$$$
Вот ссылка, чтобы проверить имена переменных JS, если хотите:
Здесь также указана ссылка на 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. Чтобы предотвратить столкновения лучше не называть свои услуги и моделировать все, что начинается с $.
Если вы проверите область действия, вы также можете заметить некоторые свойства, начинающиеся с $$. Эти свойства считаются закрытыми и не должны быть доступны или изменены.