/*생성자 함수를 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);
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] key 배열 출력 - Object.keys, for in 문 (0) | 2016.10.07 |
---|---|
[JavaScript] 자바스크립트 다형성, 메서드오버라이딩 흉내내기 (1) | 2016.09.21 |
[JavaScript] 자바스크립트 동적변수 생성(dynamic variable) (0) | 2016.06.09 |
[JavaScript] 문자열 검색, 정규표현식 검색된 문자열 배열 반환 (1) | 2016.06.01 |
[javaScript] ajax (0) | 2016.03.23 |