JavaScript 생성자
1. 생성자?
JAVA에서도 객체를 생성할 때 생성자라는 것을 사용했다.
자바스크립트에서도 생성자라는 것이 존재하는데 이번 포스팅은 그 생성자에 대해 알아보는 내용을 담겠다.
1 2 3 4 | function Card(type, num) { this.type = type; this.num = num; } | cs |
위 코드는 트럼프 카드를 표현하는 객체를 생성하는 생성자의 코드이다.
생성자로 객체를 생성할 땐 new연산자를 사용한다.
1 | var card = new Card("다이아", "A"); | cs |
이 코드를 실행해보면 객체의 참조가 변수 card에 할당하는 것을 볼 수 있다.
console.log 로 객체를 출력해보면 앞에 생성자 이름( Card )이 표시되는 것을 볼 수 있다.
< 기존 객체리터럴로 생성한 객체는 출력할 때 { 프로퍼티 내용 } 만 출력된다. />
앞의 예제처럼 new 연산자로 객체를 생성할 것이라 생각하고 만든 함수를 생성자라고 한다.
주로 생성자는 이것이 생성자라고 알리기 위해 첫 글자를 대문자로 쓴다.
또한 위에서 this는 생성자가 생성하는 객체를 가리킨다.
( 위 예제에서 this.type -> 객체에서의 프로퍼티 , = type -> 생성자 함수의 인자 type )
2. 생성자의 역할
생성자는 객체를 생성하고 초기화하는 역할을 한다.
생성자를 사용하면 객체의 이름은 같지만 프로퍼티 값이 다른 객체들을 여러 개 생성하기가 용이하다.
1 2 3 | var card1 = new Card("다이아", "A"); var card2 = new Card("클로버", "7"); var card3 = new Card("스페이드", "K"); | cs |
또한 생성자는 함수이므로 프로퍼티에 값을 대입할 수 있다.
위 예제는 생성자 Velocity 내에서 속도 velocity를 계산해서 프로퍼티에 값을 대입해 추가해 주는 예제이다.
생성자에서 메소드를 가진 객체를 생성하는 것 또한 가능하다.
1 2 3 4 5 6 7 | function Circle(center, radius) { this.center = center; this.radius = radius; this.area = function() { return Math.PI * this.radius * this.radius; }; } | cs |
< this.area = function() { ... }; 으로 원의 넓이를 계산하는 area메소드를 생성자에서 만들었다. />
3. 내장 생성자 - Function 생성자
자바스크립트에서는 사용자가 정의하는 생성자 외에도 자바스크립트에서 처음부터 포함된 내장 생성자가 있다.
( 내장 생성자의 종류는 다음 포스팅때 소개하겠다. )
그 내장 생성자 중 대표적인 생성자들이 있는데 그중에 Function 생성자를 소개하겠다.
Function은 함수를 생성하는 내장 생성자이다. 일반적으로 함수의 인수가 n개일 때 다음과 같이 사용한다.
1 | var 변수 이름 = new Function(첫 번째 인수, ..., n번째 인수, 함수의 몸통(내용)); | cs |
예를 들어 제곱 함수인 square를 Function생성자로 생성해본다면
1 | var square = new Function("x", "return x * x"); | cs |
대충 이런 식으로 생성하는 것이다.
하지만 Function생성자로 생성한 함수는 전역 변수와 자신의 지역 변수만 읽고 쓸 수 있다는 단점이 있어
함수를 동적으로 생성해야 하는 특별한 상황 외에는 잘 사용하지 않는다.
< 본 포스팅에 쓰인 코드의 출처는 '길벗출판사 - 모던 자바스크립트 입문' 입니다. />
'JavaScript' 카테고리의 다른 글
#6 자바스크립트 - 배열 (0) | 2019.03.09 |
---|---|
#5 자바스크립트 - 내장 생성자 (0) | 2019.03.08 |
#3 자바스크립트 - 함수의 기초 (0) | 2019.03.08 |
#2 자바스크립트 변수와 객체 (0) | 2019.03.06 |
#1 자바스크립트 기본 (Hello World!) (0) | 2019.03.06 |