생성자는 객체를 만들고 초기 상태를 세팅하는 역할
function Car
를 new
를 이용해 생성할 경우 function Car
는 생성자가 되고 객체가 리턴된다.
function Person(first, second) {
this.first = first;
this.second = second;
}
Person.prototype.sum = function () {
return this.first + this.second;
}
---
<console>
let kim = new Person(10, 30);
kim.sum() // 40
위 코드에서 Person.prototype.sum
은 Person 원형
안에 sum
을 만들어주는 것이다.
이후 kim.sum()
으로 호출할 경우
1. kim 객체안에 sum()이 있는지 확인한다. 있으면 해당 sum()을 사용
2. 없다면 Person 원형안에 있는 sum()을 확인하여 사용
class Car
를 new
를 이용해 생성할 경우 class
안에 constructor
가 실행되고 인스턴스가 만들어진다.
class
안에 메소드는 function
를 생략한다.
class Person {
constructor(name, first, second) {
this.name = name;
this.first = first;
this.second = second;
}
}
Person.prototype.sum = function() {
return this.first + this.second;
}
class Person {
constructor(name, first, second) {
this.name = name;
this.first = first;
this.second = second;
}
sum() {
return this.first + this.second;
}
}
위 코드는 class
을 이용한 경우다.
prototype
을 이용할 수도 있고 두 번째 코드처럼 class
안에 sum()
을 넣어 메소드로 사용할 수도 있다.
첫 번째 코드와 두 번째 코드의 차이점은 class
안에 포함 여부다.