在JavaScript模块模式中使用return {}的目的?

时间:2016-05-07 13:29:22

标签: javascript

所以我正在构建一个小应用程序,我的JavaScript代码基于Module模式,因为我认为它是一种非常简洁的JavaScript编码方法。但是我看到了两个使用下面代码的例子,另一个没有:

return {
    someMethod: someMethod,
    otherMethod: otherMethod
}

上述代码的目的是什么,是否需要?

2 个答案:

答案 0 :(得分:1)

它只是返回一个物体。代码:

return {
   someMethod: someMethod,
   otherMethod: otherMethod
}

完全相同:

var someObject = {
    someMethod: someMethod,
    otherMethod: otherMethod
}

return someObject;

答案 1 :(得分:0)

// create an scope by declaring anonymous function and immediately executing it
// the return value will be assigned to myModule...
var myModule = (function(){

    // return the parts of the scope to be exposed publicly
    return {
        someMethod: someMethod,
        otherMethod: otherMethod
    }

    function someMethod(item){ return myPrivateSquareFunction(item) * 2; };
    function otherMethod(item){ return item * 5; };
    // private function can be called from in the module's scope, but not externally
    function myPrivateSquareFunction(item){ return item * item; }

})();

// now, out here you can call `otherMethod`, and `someMethod` (which itself calls `myPrivateSquareFunction`) but you can not call `myPrivateSquareFunction`...

console.log(someMethod(3)); // 18
console.log(otherMethod(3)); // 15
console.log(myPrivateSquareFunction(3)); // ERROR!

通过使用此模式,您可以选择保持私有的实现细节,以及需要向模块公开的内容。这有助于您将代码分解为谨慎的块,这些块可以单独处理和测试,而不会使应用程序的其余部分复杂化它的功能。然后,当您有许多小块代码正确地完成自己的工作并正确分离时,管理将它们组装到更复杂的应用程序中是一件更容易的任务。