1

在一个 JavaScript 文件中,脚本被包装到 this 中,为什么要将代码包装到 this 中?对此有任何参考吗?为什么要定义Basepage=global.Basepage

;(function (global,$,_) {
  var Basepage=global.Basepage = Backbone.View.extend({});
}(app,jQuery,_));
4

2 回答 2

1

通过设置 a var Basepage,Basepage 将成为该函数中的局部变量,并且它们不需要编写global.Basepage任何进一步的引用。像这样的组织有几个好处,我将尝试列出每一个。

  1. 代码的其他部分将无法访问函数内的任何变量。var x如果您声明一个通用名称,例如orvar element并且不希望它作为全局变量与其他名称混淆,这将非常有用。
  2. 在函数内部,“app”被称为“global”。设置 'global.Basepage = Backbone.etc...' 意味着在该函数执行后,app将拥有BasePage一个属性。
  3. 一些 javascript 加载器框架依赖于这种样式,以便能够在其所有依赖项(如 JQuery)加载后初始化模块。
于 2013-08-23T01:01:29.093 回答
1

它是一种方法namespacing。这样,您就可以将单个变量添加到全局命名空间中,并且可以访问它以访问其他方法和变量。

它所做的是在读取代码时自行执行函数,并在执行时app, jQuery, and _作为变量传递给函数,这是参数所采用的。 global = app $ = jQuery _ = _.

这为您提供了一种在不污染全局命名空间的情况下封装功能的好方法,并降低了覆盖应用程序中具有相同名称的变量的风险。

于 2013-08-23T01:01:37.533 回答