JavaScriptモジュールパターンの例として、次の3つのコードブロックを見てきました。違いは何ですか?なぜ私は他のパターンよりも1つのパターンを選ぶのですか?
パターン1
function Person(firstName, lastName) {
var firstName = firstName;
var lastName = lastName;
this.fullName = function () {
return firstName + ' ' + lastName;
};
this.changeFirstName = function (name) {
firstName = name;
};
};
var jordan = new Person('Jordan', 'Parmer');
パターン2
function person (firstName, lastName) {
return {
fullName: function () {
return firstName + ' ' + lastName;
},
changeFirstName: function (name) {
firstName = name;
}
};
};
var jordan = person('Jordan', 'Parmer');
パターン3
var person_factory = (function () {
var firstName = '';
var lastName = '';
var module = function() {
return {
set_firstName: function (name) {
firstName = name;
},
set_lastName: function (name) {
lastName = name;
},
fullName: function () {
return firstName + ' ' + lastName;
}
};
};
return module;
})();
var jordan = person_factory();
私の知る限り、JavaScriptコミュニティは、一般的にパターン3が最適であることに賛成しているようです。最初の2つとどう違うのですか?3つのパターンすべてを使用して、変数と関数をカプセル化できるように思えます。
注:この投稿は実際には質問に答えていません。また、重複しているとは考えていません。