본문 바로가기
Language/JavaScript

[JavaScript] 생성자와 new

by 며루치꽃 2020. 9. 11.

생성자

 

객체를 생성하는 함수를 생성자 함수라고 부릅니다. 다른 언어에서는 class가 있지만 자바스크립트에서는 없다

 

var prototype = { type: '카드' };
function Card(name, att, hp){ //생성자는 함수이다 대문자로 놓고 
    this.name = name; 
    this.att = att;
    this.hp = hp;
}
Card.prototype = prototype;

생성자는 함수이다. 생성자를 만들 때는 대문자로 시작하는것이 규칙이다. 

생성자를 바탕으로 실제 카드 객체를 만들 수 있다.

 

new

이 때 new라는 키워드를 사용해서 만들게 되는데 

new 생성자(인자)

 

 

형태로 만들면 된다.

 

위에 코드에서 this란 생성자 함수 자신을 가르킨다. this에 저장된 것은 new 라는 키워드를 통해 객체를 만들 때

그 객체에 적용이 된다.

 

Card(name, att, hp) 안에 들어있는 name, att, hp를 this 키워드를 통해 this.name, this.att, this.hp로 저장한다

 

var skykchmin = new Card('skykchmin', 5, 10);

new 키워드를 통해 new 키워드를 통해 생성자로 변하게 되면서 객체를 만들어 낸다.

 

var skykchmin = Card('skykchmin', 5, 10);

new를 붙이게 되면 객체가 된다. new를 붙이지 않으면 undefined가 나온다.

그 이유는 위 형태를 함수를 호출하는 형태인데 함수에서 return 값이 없으면 undefined가 되기 때문이다.

 

this.value는 기본적으로 window이고 strict모드에서는 undefined이다. 

new를 붙이면 this가 window에서 새로 생성된 객체로 바뀌게 된다.

 

참고 

  • 인프런 - 제로초 강의

 

'Language > JavaScript' 카테고리의 다른 글

[JavaScript] 호출 스택과 이벤트 루프  (0) 2020.09.19
[JavaScript] for, forEach  (0) 2020.09.14
[JavaScript] 프로토타입  (0) 2020.09.10
[JavaScript] 객체를 복사하는 방법  (0) 2020.09.08
[JavaScript] 참조와 복사  (0) 2020.09.07

댓글