Javascript 为什么图书馆的主要对象通常以大写字母开头?

Javascript 为什么图书馆的主要对象通常以大写字母开头?,javascript,Javascript,目前,我正在尝试理解的源代码,并注意到主主干属性/对象的首字母大写: var root = (typeof self == 'object' && self.self === self && self) || (typeof global == 'object' && global.global === global && global); // Set up Backbone appropriatel

目前,我正在尝试理解的源代码,并注意到主主干属性/对象的首字母大写:

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, _, $);
});
我不明白为什么不仅仅是根。我听说人们用首字母大写来命名构造函数,但在这种情况下,我们有工厂方法

因此,当我们不处理库和编写简单代码时,我们不会像我在教程中看到的那样进行大写,也不会以这种方式命名使用构造函数创建的对象:

var person = new Person("John", "Doe", 50, "blue") //not var Person
我认为这个问题的答案可以帮助很多新手理解js脚本代码

我不明白为什么不仅仅是根

没有任何具体原因,但使用大写名称命名库和其他全局对象是一种常见的约定。它降低了名称与局部变量冲突的风险,局部变量通常以小写字母命名


在这种情况下,Person已经作为全局变量存在!将局部变量命名为Person将与该全局变量冲突,并且代码实际上根本不起作用。new Person中的Person将被解释为引用尚未初始化的局部变量。

解释器不关心是否使用大写字母或小写字母,也不关心在何处使用大写字母或小写字母。两者之间没有技术上的区别,在任何司法管辖区都还没有人通过法律,我知道有人说你必须使用一种或另一种风格。因此,在一天结束时,使用哪一种取决于个人喜好。您和Backbone.js的作者可以自由使用诸如Backbone或Backbone或bAcK__________________________

大多数语言都有自己的风格惯例,这是该语言的开发人员所倾向的。Java中的方法倾向于小写,而C中的方法倾向于大写。C++标准库有利于下标的下划线。等等当然,所有这些语言的一些作者都偏离了社区中大多数人认为的标准。您也可以自由地这样做,尽管遵循流行的社区风格或您的公司/组织风格(如果适用)有一些具体的可读性和可维护性优势


在JavaScript中,事情有点混乱,因为。在这个特定的例子中,我猜Backbone.js的作者认为,由于所讨论的主干对象代表主干API的入口点,因此它更像类而不是对象,并且强调,他们给了它一个大写字母B。

不幸的是,虽然表面上看这似乎是个好问题,这不是一个真正有技术答案的问题。JavaScript语言对命名约定没有任何特定的要求,这使得使用特定约定成了一个意见问题。因此,这个问题的多个答案可能都是正确的,这使得这个问题不适合这种格式。不幸的是,一个对新手有帮助的问题不会自动就这个主题提出问题。离题的问题是离题的,即使它们可能有帮助。
var person = new Person("John", "Doe", 50, "blue") //not var Person