Prototype 이란?
function Person(n, a) {
this.name = n;
this.age = a;
}
var jay = new Person("제이", 30);
var jayCone1 = new jay.__proto__.constructor("제이_클론1", 10);
var jayCone2 = new jay.constructor("제이_클론2", 25);
var jayCone3 = new jay.Object.getPrototypeOf(jay).constructor("제이_클론1", 10);
var jayCone4 = new Person.prototype.constructor("제이_클론1", 10);
//jay라는 원본과 clone들은 모두 Person의 인스턴스(모두 동일한 프로퍼티에 접근할수 있기 때문)
메서드 상속 및 동작 원리
프로토타입을 이용하면 반복을 매번 동일한 함수를 작성할 필요없이 코드량을 줄일수 있다.
function Person(n, a) {
this.name = n;
this.age = a;
}
var jay = new Person("제이", 30);
var mumu = new Person("무무", 25);
jay.setOlder = function () {
this.age += 1;
};
jay.getAge = function () {
return this.age;
};
mumu.setOlder = function () {
this.age += 1;
};
mumu.getAge = function () {
return this.age;
};
매번 함수를 정의하기 보다
function Person(n, a) {
this.name = n;
this.age = a;
}
Person.prototype.setOlder = function () {
this.age += 1;
};
Person.prototype.getAge = function () {
return this.age;
};
var jay = new Person("제이", 30);
var mumu = new Person("무무", 25);
jay.setOlder();
jay.getAge();
mumu.setOlder();
mumu.getAge();
//prototype으로 인해 반복하지 않고 코드 작성 가능
프로토 타입을 정의후 상속하여 코드를 반복하지 않고 사용가능하며, 메모리 성능에도 큰 도움이 된다.