模块模式(Module Pattern)提供了一种代码封装的方式,可以优雅地创建非耦合的代码块。
它是利用即时函数为对象创建私有变量和特权方法。严格来说,Javascript中没有私有成员的概念,所有的对象属性都是公有的。不过,任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。而特权方法作为闭包有权访问在函数中定义的所有变量和函数。
模块模式是多个概念的结合,包括:
闭包
命名空间
即时函数
私有变量和特权方法
模块模式的语法大概如下:
KUI.utils.namespace("KUI.module.module1"); KUI.module.module1 = (function() { var utils = KUI.utils, // private properties string1 = "string1", array1 ; []; // private function function privateFn() { } return { // public properties publicProperties : "publicProperties", // public function publicFn : function(a) { }, publicFn1 : privateFn }; })();
特别地,可以通过简单即时函数创建块级作用域:
(function(){ // })();