object를 쉽게 만들 때 ES6전에는 new와 function을 사용해서 만듦
function 기계() {
this.q = '뭐뭐';
this.w = '뭐뭐뭐';
}
const nunu = new 기계()
이렇게해서 오브젝트를 쉽게쉽게 찍어낼 수 있음
부모와 자식의 관계에서 prototype을 활용하여 자식에게 쉽게 전달이 가능
prototype은 유전자라고 생각하면 됨
기계.prototype.name = 'kim'
이렇게 넣어준다면 기계로부터 생성된 자식들은 그 값을 사용할 수 있음
ex) nunu.name하면 'kim'이라는 값이 나옴 (유전자로부터 기록을 해준 거라)
위에 오브젝트 형식에
// 여기에 값을 넣으면 자식이 {q : "뭐뭐"} 값을 직접 가짐
function 기계() {
this.q = '뭐뭐';
this.w = '뭐뭐뭐';
}
// nunu.prototype.name에 넣으면 부모만 {name : "kim" }을 가짐
nunu.name을 찾아볼 때
nunu가 name을 가지고 있지 않으면 -> nunu 부모 유전자에서 찾음
이런 것을 "prototype chain"이라고 함
기본적으로
const array1 = [4, 2, 1]
const array1 = new Array(4, 2, 1) (= 컴퓨터가 생성하는 방식)
와 같은 배열에서
우리가 sort(), length 등 을 사용할 수 있는 이유는
이러한 값들이 유전자에 기록이 되어 있기 때문
우리가 Array가 가질 수 있는 기능에 우리가 만든 함수를 넣고 싶다면
Array.prototype.함수 = function(){
~우리가 넣고 싶은 기능 (ex : 마지막엔 3을 넣어주세요)
}
같은 기능을 정의해서 만들 수 있음