자바스크립트 prototype

세나정·2023년 3월 3일
0

JavaScript

목록 보기
1/11
post-thumbnail
내가 까먹을까봐 쓰는 프로토타입..

object를 쉽게 만들 때 ES6전에는 new와 function을 사용해서 만듦

function 기계() {
	this.q = '뭐뭐';
    this.w = '뭐뭐뭐';
}

const nunu = new 기계()

이렇게해서 오브젝트를 쉽게쉽게 찍어낼 수 있음

부모와 자식의 관계에서 prototype을 활용하여 자식에게 쉽게 전달이 가능

- 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 부모 유전자에서 찾음

- object에서 자료 뽑을 때 일어나는 일

  1. 직접 자료를 갖고 있으면 그 값을 출력
  2. 없다면 부모 유전자에서 뒤져봄
  3. 없으면 부모의 부모 유전자까지

이런 것을 "prototype chain"이라고 함

기본적으로
const array1 = [4, 2, 1]
const array1 = new Array(4, 2, 1) (= 컴퓨터가 생성하는 방식)
와 같은 배열에서

우리가 sort(), length 등 을 사용할 수 있는 이유는
이러한 값들이 유전자에 기록이 되어 있기 때문

우리가 Array가 가질 수 있는 기능에 우리가 만든 함수를 넣고 싶다면

Array.prototype.함수 = function(){
	~우리가 넣고 싶은 기능 (ex : 마지막엔 3을 넣어주세요)
}

같은 기능을 정의해서 만들 수 있음

profile
압도적인 인풋을 넣는다면 불가능한 것은 없다. 🔥

0개의 댓글