解释这个javascript

时间:2013-09-09 16:41:47

标签: javascript

有人可以解释下面代码的作用,尤其是第1点和第2点:

1)

(function (carWeb) {    
})(carWeb || (carWeb = {}));

更新 2)为什么下面的函数在IIFE中声明,而GridView使用了四次

 function GridView() {            
        }    

// usercontrols.gridview.js

var carWeb;
(function (carWeb) {
    carWeb.GridView = (function () {

        function GridView() {            
        }        
        GridView.init = function (gridSelector, threeGridButtonSelector) {
            GridView.gridSelector = gridSelector;            
            threeGridButtonSelector.on("click",  this.setThree);                     
        };

        return GridView;
    })();

})(carWeb || (carWeb = {}));
carWeb.GridView.init($("#top.items"), $("#grid-view-grid")));

更新

任何链接都将受到赞赏。

为什么这个问题被搁置? 请投票重新开启帖子,并投票支持

1 个答案:

答案 0 :(得分:1)

它将GridView子模块添加到carWeb模块,而

  • 确保carWeb模块存在(如果未定义carWeb,则(carWeb = {})语句定义它)
  • 如果脚本被缩小,carWeb变量名称可以缩小(但是因为变量是在var语句之前定义的,所以这不是必需的)
  • 使用the IIFE pattern
  • ,此模块使用的变量是私有的,不会污染全局命名空间

这种方法很常见,因为如果您在不同文件中定义了许多子模块,则文件的顺序并不重要,您可以根据需要添加或删除文件(即子模块)。

另一种不那么冗长的写作方式(我通常的解决方案)应该是:

var carWeb = carWeb || {}
(function(){
   carWeb.GridView = ...
})();

Example