생성자 함수를 작성할 때 new 예약어를 사용해서 작성하게 된다.
그렇다면 new 예약어를 사용하면 무슨일이 일어나는걸까?
new 예약어를 사용하면
- 새로운 빈 객체를 만든다
- this를 새로 만들어진 객체에 bind한다
- 새로 만들어진 객체에 "__proto__""라 불리는 property를 더한다. 이것은 생성자함수의 prototype객체를 의미한다.
- return this를 함수의 끝에 추가한다. 때문에 객체는 함수로부터 return되어 만들어진 것이다.
function Student(name, age) {
this.name = name;
this.age = age;
}
Student라는 생성자 함수를 만들었다. 이 함수는 name, age라는 두개의 파라미터를 가진다. 이 인자들은 this의 value에 프로퍼티를 만든다.
var first = new Student('John', 26);
new 예약어로 생성자 함수를 호출하자. 'Jogh'과 26이라는 두개의 arguments를 전달하자.
위 코드를 실행하면
- 새로운 객체를 만들어낸다 - first 객체
- this는 first 객체에 bind된다. 때문에 this에 대한 참조를 first를 향할 것이다.
- __proto__가 추가된다. first.__proto__는 이제 student.prototype을 가리킨다.
- 모든 것이 완료된 후에 새로운 first 객체는 새로운 first 변수에 return된다.
console.log(first.name);
// John
console.log(first.age);
// 26
참조)
초보자를 위한 Javascript: 'new' 예약어 (tistory.com)
'바닐라코딩 사전학습 > JS' 카테고리의 다른 글
Windows 객체 (0) | 2021.12.28 |
---|---|
this의 4가지 역할 (0) | 2021.12.27 |
객체 생성자 함수 (0) | 2021.12.27 |
Call by value / Call by reference (0) | 2021.12.27 |
콜스택 / 메모리힙 구조, 데이터저장 / 참조 원리 (0) | 2021.12.27 |