YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* シングルトンパターン(アクセス権付きで) [#ib951481]
** オブジェクトを定義する [#pc722855]
var Singleton = (function(){
var instance;
function init() {
var foo = 'FOO';
var bar = 'BAR';
var getFoo = function () { return this.foo; };
var getBar = function () { return bar; };
var _getBaz = function () { return 'BAZ' };
return {
foo: foo,
getFoo: getFoo,
getBar: getBar,
getBaz: _getBaz
};
}
return {
getInstance: function () {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
** オブジェクトを利用する [#h23ce356]
var obj = Singleton.getInstance();
console.log('DEBUG: ' + obj.getFoo()); // getFoo()は公...
console.log('DEBUG: ' + obj.getBar()); // getBar()も公...
obj.foo = 'FOO2'; // fooはパブリ...
console.log('DEBUG: ' + obj.getFoo()); // "FOO2"に変わ...
obj.bar = 'BAR2'; // barはプライ...
console.log('DEBUG: ' + obj.getBar()); // "BAR"のまま。
console.log('DEBUG: ' + obj.getBaz()); // getBaz()は内...
var obj2 = Singleton.getInstance(); // シングルトン...
console.log('DEBUG: ' + obj2.getFoo()); // obj2のfooプ...
obj2.foo = "FOO3"; // obj2のfooを...
console.log('DEBUG: ' + obj.getFoo()); // objのfooは"F...
DEBUG: FOO
DEBUG: BAR
DEBUG: FOO2
DEBUG: BAR
DEBUG: BAZ
DEBUG: FOO2
DEBUG: FOO3
** 参考 [#g073dfc3]
http://www.addyosmani.com/resources/essentialjsdesignpatt...
終了行:
* シングルトンパターン(アクセス権付きで) [#ib951481]
** オブジェクトを定義する [#pc722855]
var Singleton = (function(){
var instance;
function init() {
var foo = 'FOO';
var bar = 'BAR';
var getFoo = function () { return this.foo; };
var getBar = function () { return bar; };
var _getBaz = function () { return 'BAZ' };
return {
foo: foo,
getFoo: getFoo,
getBar: getBar,
getBaz: _getBaz
};
}
return {
getInstance: function () {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
** オブジェクトを利用する [#h23ce356]
var obj = Singleton.getInstance();
console.log('DEBUG: ' + obj.getFoo()); // getFoo()は公...
console.log('DEBUG: ' + obj.getBar()); // getBar()も公...
obj.foo = 'FOO2'; // fooはパブリ...
console.log('DEBUG: ' + obj.getFoo()); // "FOO2"に変わ...
obj.bar = 'BAR2'; // barはプライ...
console.log('DEBUG: ' + obj.getBar()); // "BAR"のまま。
console.log('DEBUG: ' + obj.getBaz()); // getBaz()は内...
var obj2 = Singleton.getInstance(); // シングルトン...
console.log('DEBUG: ' + obj2.getFoo()); // obj2のfooプ...
obj2.foo = "FOO3"; // obj2のfooを...
console.log('DEBUG: ' + obj.getFoo()); // objのfooは"F...
DEBUG: FOO
DEBUG: BAR
DEBUG: FOO2
DEBUG: BAR
DEBUG: BAZ
DEBUG: FOO2
DEBUG: FOO3
** 参考 [#g073dfc3]
http://www.addyosmani.com/resources/essentialjsdesignpatt...
ページ名: