JavaScript
[JavaScript] 싱글톤 패턴 (Singleton)
힘없는염소
2016. 9. 10. 23:29
/*생성자 함수를 new와 함께 호출하면 항상 기본값은 this로 참조되는 객체가 반환된다.함수 내에 return문을 쓰지 않았더라도 생성자는 암묵적으로 this를 반환한다.그러나 반환 될 객체를 다음과 같이 따로 정할 수도 있다.*/function Obj(){// 생성자가 다른 객체를 대신 반환하기 때문에 다음의 'name' 프로퍼티는 무시된다.this.name = "홍길동";// 새로운 객체를 생성하여 반환한다.var that = {};that.name = "김길동";return that;};var o = new Obj();console.log(o.name) // 김길동
// 싱글톤은 항상 같은 객체를 만드는 것??(같은 객체를 참조)인데 자바스크립트는 별도의 문법이 존재하지 않는다.function Obj() {// Class를 이용해 object를 만들었다는 것을 강조할때 object라는 표현보다 'instance'라는 표현을 쓴다.if(typeof Obj.instance === "object") { // 최초 실행했을때에는 undefined 이다. // falsereturn Obj.instance;}this.start = 10;this.end = 100;// 생성자 함수에서 this는 생성된 객체를 참조한다. // (외부에서 new 키워드로 생성되는 객체를 참조한다는 말이 맞겠다.)// window.Obj.instance = this;Obj.instance = this; // 최초(가장먼저) new 키워드로 생성된 객체를 Obj.instance에 저장한다. (함수도 객체이기에 이와 같은 문법이 가능하다)}var o = new Obj();var o1 = new Obj();console.log(o);console.log(o === o1);console.log(Obj.instance);
반응형