js는 객체지향프로그래밍 언어가 아니다.
따라서 함수를 객체로 사용하고, 기존 객체를 복사하여 새로운 객체를 생성하는 프로토타입 언어다.
프로토타입은 객체를 확장하고, 객체 지향적인 프로그래밍을 할 수 있게 해준다.
모든 객체는 프로토타입 객체에 접근 할 수 있다.
function Person () {}
let won = new Person();
let mimi = new Person();
Person.prototype.getType =function(){
return 'human';
}
console.log(won.getType()) // human
console.log(mimi.getType()) // human
또 추가할 수 있는데,
won.getType = function () {
return '사람';
}
console.log(won.getType()) // 사람
console.log(mimi.getType()) // human
won.age = 10;
console.log(won.age) // 10
console.log(mimi.age) // undefinde
프로토타입 객체는 새로운 객체를 만들 수 있는 원형 객체다.
같은 원형으로 생성된 객체가 공통으로 참조가 가능하다.
proto로 접근이 가능하다.
let animal = {
eats: true
};
function Rion(name) {
this.name = name;
}
Rion.prototype = animal;
let Rion = new Rion("사자"); // Rion.__proto__ == animal
alert( Rion.eats ); // true