それはモジュールパターンと呼ばれていますhttp://toddmotto.com/mastering-the-module-pattern/
主な理由は、真にプライベートなメソッドと変数を作成することです。あなたの場合、実装の詳細を隠していないので意味がありません。
モジュールパターンを使用することが理にかなっている例を以下に示します。
var MyNameSpace = {};
(function(ns){
// The value variable is hidden from the outside world
var value = 0;
// So is this function
function adder(num) {
return num + 1;
}
ns.getNext = function () {
return value = adder(value);
}
})(MyNameSpace);
var id = MyNameSpace.getNext(); // 1
var otherId = MyNameSpace.getNext(); // 2
var otherId = MyNameSpace.getNext(); // 3
あなただけのストレートオブジェクトを使用し、場合一方adder
及びvalue
公共なります
var MyNameSpace = {
value: 0,
adder: function(num) {
return num + 1;
},
getNext: function() {
return this.value = this.adder(this.value);
}
}
そして、あなたは次のようなことをすることでそれを壊すことができます
MyNameSpace.getNext(); // 1
MyNameSpace.value = 0;
MyNameSpace.getNext(); // 1 again
delete MyNameSpace.adder;
MyNameSpace.getNext(); // error undefined is not a function
しかし、モジュールのバージョンでは
MyNameSpace.getNext(); // 1
// Is not affecting the internal value, it's creating a new property
MyNameSpace.value = 0;
MyNameSpace.getNext(); // 2, yessss
// Is not deleting anything
delete MyNameSpace.adder;
MyNameSpace.getNext(); // no problemo, outputs 3