次の単純な JavaScript モジュール パターンを検討してください。
var human = (function () {
var _name = '';
return {
name: _name,
setName: function (name) {
_name = name;
}
}
})();
human.setName('somebody');
alert(human.name); // shows an empty string
human = (function () {
var _name = '';
return {
name: function() {
return _name;
},
setName: function (name) {
_name = name;
}
}
})();
human.setName('somebody');
alert(human.name()); // shows 'somebody'
最初のクロージャーが機能しないのに、2 番目のクロージャーが正常に機能するのはなぜですか? ここで例を参照してください。
この fiddleも参照してください。これは、getter 関数の代わりに単純なプロパティを使用できることを証明しています。