JavaScript模块解释

时间:2014-02-02 12:12:12

标签: javascript

这种方式有什么区别:

var MyNamespace = window.MyNamespace || {};

MyNamespace.Helper = function()
{
     var _getValue = function()
     {
         var value = 5;

         return value;
     };


    return 
    {
         getValue: _getValue
    };
}();

这样:

var MyNamespace = window.MyNamespace || {};

MyNamespace.Helper = function()
{
    function _getValue()
    {
       var value = 5;

       return value;
    };

    var publicMethod = 
    {
        getValue: function() { _getValue(); }
    };

    return publicMethod;    
};

1 个答案:

答案 0 :(得分:5)

有两个非常显着的差异:

  1. 第一个版本不会返回对象,因此MyNamespace.Helper将为undefined。尝试在其上使用getValue将失败。这要归功于自动分号插入在;之后添加return。不要在return之后添加换行符及其返回的内容。

  2. 假设你修复了它,那么在第一个上调用MyNamespace.Helper.getValue将为您提供值5,而在第二个上调用它将为您提供undefined,因为_getValue周围的匿名包装器不会返回任何内容。