目前,我正在尝试了解Backbone.js的源代码,并注意到主Backbone
属性/对象是首字母大写:
var root = (typeof self == 'object' && self.self === self && self) ||
(typeof global == 'object' && global.global === global && global);
// Set up Backbone appropriately for the environment. Start with AMD.
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
// Export global even in AMD case in case this script is loaded with
// others that may still expect a global Backbone.
root.Backbone = factory(root, exports, _, $);
});
我不明白为什么它不仅仅是root.backbone
。我听说过人们用首字母大写字母来命名构造函数但是我们有工厂方法。
因此,当我们不处理库并编写简单的代码时,我们不会进行大写(就我在教程中看到的那样)并且我们不会命名对象。用构造函数以这种方式创建:
var person = new Person("John", "Doe", 50, "blue") //not var Person
我认为这个问题的答案可以帮助很多新手理解js脚本代码。
答案 0 :(得分:1)
我不明白为什么它不只是
root.backbone
。
没有任何具体原因,但命名库和其他具有大写名称的全局对象是一种常见的约定。它降低了名称与局部变量冲突的风险,局部变量通常以小写形式命名。
var person = new Person("John", "Doe", 50, "blue") //not var Person
在这种情况下,Person
已作为全局变量存在!命名局部变量Person
将与该全局变量冲突,并且代码实际上根本不起作用。 (Person
中的new Person
将被解释为引用尚未初始化的局部变量。)
答案 1 :(得分:0)
翻译人员并不关心您是否使用大写或小写字母。这两者之间没有任何技术差异,在任何司法管辖区都没有人通过法律,我知道你必须使用一种或另一种风格。因此,在一天结束时,使用哪个取决于个人喜好。您和Backbone.js作者可以免费使用Backbone
或backbone
或bAcK__bOnE
等标识符。
大多数语言都具有风格惯例,该语言的开发人员社区倾向于这些惯例。 Java中的方法往往是lowerCamelCased()
,而C#中的方法往往是UpperCamelCased()
。 C ++标准库偏爱lowercase_with_underscores
。等等。当然,所有这些语言中的一些作者都偏离了社区中大多数人所认为的#34;标准。"您也可以自由地这样做,尽管有一些具体的可读性和可维护性优势,可以遵循流行的社区风格(或适用的公司/组织风格)。
在JavaScript中,事情有点混乱,因为almost everything is an object。在这种特殊情况下,我猜Backbone.js的作者认为,由于有问题的Backbone
对象代表了Backbone API的入口点,它比类似对象更像类,并强调他们给了它一个资本B.