생성자
객체를 생성하는 함수를 생성자 함수라고 부릅니다. 다른 언어에서는 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 |
댓글