所以我正在构建一个小应用程序,我的JavaScript代码基于Module模式,因为我认为它是一种非常简洁的JavaScript编码方法。但是我看到了两个使用下面代码的例子,另一个没有:
return {
someMethod: someMethod,
otherMethod: otherMethod
}
上述代码的目的是什么,是否需要?
答案 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!
通过使用此模式,您可以选择保持私有的实现细节,以及需要向模块公开的内容。这有助于您将代码分解为谨慎的块,这些块可以单独处理和测试,而不会使应用程序的其余部分复杂化它的功能。然后,当您有许多小块代码正确地完成自己的工作并正确分离时,管理将它们组装到更复杂的应用程序中是一件更容易的任务。