模块模式(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(){

       //

})();
05-02 08:25