생성자는 객체를 만들고 초기 상태를 세팅하는 역할
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안에 포함 여부다.