ES6 문법 - Prototype

4924 단어 JavaScriptJavaScript

Prototype

Prototype은 자바스크립트 언어에만 존재한다.
prototype은 유전자라고 받아들이면 된다.

기계(constructor)를 만들면 prototype이라는 공간이 자동으로 생긴다.
prototype에 값을 추가하면 모든 자식들이 물려받기 가능하다.
(Constructor가 부모, Constructor로 생선된 instance들이 자식)


function Machine(nic, age) {
      this.name = nic;
      this.age = age;
      this.sayHi = function() {
        console.log('안녕하세요! ' + this.name + '입니다!');
      }
    }
  
    Machine.prototype.gender = '남';
	//Constructor로 생성된 모든 object에 gender : '남'이 물려받는다.

    let people1 = new Machine('Apeachicetea', 15);
    let people2 = new Machine('kim', 20);


Machine.prototype.gender = '남';
people1에는 gender라는 속성이 없지만, people1.gender = '남'이라고 출력된다.

그 이유는 JS의 object 출력시 동작원리에 있다.
people1.gender를 작성했을때,
1. JS는 먼저 people1이 직접 gender라는 속성을 가지고 있는가를 확인 한 후 없다면,
2. people1의 부모 유전자, 즉 Constructor.prototype이 gender라는 속성을 가지고 있는가를 확인한다.
3. 그리고 있다면 실행해준다.

Prototype 특징

  1. prototype은 함수에만 몰래 생성된다.
  2. 부모의 prototype을 검사하고 싶다면

  1. proto를 이용해 부모 강제 등록하기
    object에는 prototype이 생성되지 않는데,
    아래와 같이 강제로 연결해줄 수 있다.
let parents = { name : 'kim' };
let children = {};
children.__proto__ = parents;


console.log(children.name);

콘솔창

좋은 웹페이지 즐겨찾기