我正在查看 angular 1.2 源代码,我很好奇为什么有些函数以两个美元符号为前缀。这是某种约定吗?
角度中使用的 $$(双美元符号)是什么?
- Single
$
用于保留的公共标识符 $$
保留私有标识符的双倍
引用文档:
$ 前缀命名约定
...
如果您检查 Scope,您可能还会注意到一些以 $$ 开头的属性。这些属性被认为是私有的,不应访问或修改。
如果我可以补充:
除了对 Angularjs 重要之外,'$$' 或 '$' 只是变量名中允许的字符。Angularjs 使用两者来确定对您和他们自己的开发团队的重要性。
您可以以相同的方式命名所有变量;但是为了避免命名冲突,请远离这种做法。这里有一些例子,如果你这样做...
$$$$myVariableName; $myVariableName$; _myVariableName_; $$$$$$myVariableName$$$$$$$$
如果您愿意,这里有一个测试 JS 变量名称的链接:
这里还有一个指向 MDN 的链接,解释了允许的字符:
这是文本:
变量
您可以使用变量作为应用程序中值的符号名称。变量的名称,称为标识符,符合一定的规则。
JavaScript 标识符必须以字母、下划线 (_) 或美元符号 ($) 开头;后续字符也可以是数字 (0-9)。因为 JavaScript 区分大小写,所以字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。
从 JavaScript 1.5 开始,您可以在标识符中使用 ISO 8859-1 或 Unicode 字母,例如 å 和 ü。您还可以使用 \uXXXX Unicode 转义序列作为标识符中的字符。
合法名称的一些示例是 Number_hits、temp99 和 _name。
Angulajs 在每个对象中都包含了相当多的信息;有些项目是针对 Angularjs 的,有些是针对开发人员的,这意味着有些项目可能无法编辑,但如果这是您要使用它的目的,那么所有项目都应该可供参考。
但是,在未来的版本中,任何私有标识符都可能会消失,因为 Angularjs 团队希望开发人员不要使用保留/私有名称。
在发布的“类似链接”的情况下,Angularjs 是这样说的:
$ 前缀命名约定您可以创建自己的服务,实际上我们将在步骤 11 中做到这一点。作为命名约定,Angular 的内置服务、Scope 方法和其他一些 Angular API 在名称。
$ 前缀用于命名空间 Angular 提供的服务。为防止冲突,最好避免命名您的服务并为任何以 $ 开头的模型命名。
如果您检查 Scope,您可能还会注意到一些以 $$ 开头的属性。这些属性被认为是私有的,不应访问或修改。