반응형
생성자로 호출
“생성자로” 함수를 호출하려면 함수 호출 앞에 new키워드를 붙인다.
생성자의 강력함
생성자로 함수를 호출하는 것은 자바스크립트만의 강력한 기능이다. 특별한 행동이 일어나기 때문이다
비어있는 객체가 새로 생성된다.
새로 생성된 객체는 this 매개변수로 생성자 함수에 전달되고, 따라서 생성자의 함수 컨텍스트가 된다.
어떤 명시적인 반환 값이 없다면, 새로 생성된 객체가 생성자의 값으로 반환된다.
생성자의 목적은 새로 생성한 객체의 내용을 설정하고, 새 객체를 생성자의 값으로 반환하는 것이다.
1 2 3 4 5 6 7 8 | function Ninja(){ this.skulk = function() { return this; }; } var ninja1 = new Ninja(); var ninja2 = new Ninja(); ninja1.skulk() === ninja1; // true 각 메서드는 각자의 생성자로 만들어진 객체를 반환해야 한다. Ninja2.skulk() === ninja2; // true | cs |
New 키워드를 사용하여 함수를 호출하면, 빈 객체 인스턴스가 생성되고, 생성자 함수에 빈 객체 인스턴스가 this로 전달된다.
생성자 함수는 this 객체에 skulk라는 프로퍼티를 생성하고 함수를 할당한다. 결국 새로 생성된 객체는 skulk 프로퍼티를 갖게 된다.
생성자를 작성할 때 고려해야 할 것들
생성자 함수는 특정한 상태로 초기화된 객체를 만들어 반환하기 위해서 사용한다.
var whatever = Ninja(); 로 사용할시 window에 skulk 프로퍼티가 만들어지고, 반환 값은 winodw이며 winodw가 whatever 변수에 저장된다. (이 방법은 유용한 연산은 아니다.)
따라서 평범한 함수나 메서드와 생성자를 구분하도록 명명 규칙(naming convention)이 필요하게 되었는데
함수와 메서드의 이름은 보통 그들이 하는 것을 설명하는 동사로 시작한다. (첫글자 소문자)
반면 생성자의 이름은 보통 생성할 객체가 무엇인지를 설명하는 명사이다. (첫글자 대문자)
반응형
'프로그래밍 노트 > JAVASCRIPT' 카테고리의 다른 글
[Javascript] 속성(attribute)와 프로퍼티(property)의 차이 (0) | 2018.12.03 |
---|---|
[Javascript] 함수의 호출_4 (apply(), call() 메서드 사용) (0) | 2018.11.28 |
[Javascript] 함수의 호출_2 (메서드로 호출) (0) | 2018.11.27 |
[Javascript] 함수의 호출_1 (함수로 호출) (0) | 2018.11.27 |
[Javascript] 자바스크립트 함수에서 argument와 this (0) | 2018.11.27 |