S07. dunderproto

최대 1 분 소요

Dunder Proto

  • instanceof 연산자 (instance 판별 연산자)
      var ken = new Person();
      console.log(ken instanceof Person);
      true
    
  • 함수를 읽는 순간 prototype 객체는 생성된다.

  • console.log(Person); // 아빠
    console.log(Person.prototype); // 아빠의 아내
    console.log(Person.prototype.constructor); // 아빠
    console.log(ken.constructor); // Person, 본인이 없으면 엄마의 속성을 가져다쓴다.

  • 단순객체기에 원하는대로 속성/값을 줄 수 있다.
      Person.prototype.log = function(){
          console.log('hello, world');
      }
    
  • 자식이기에 당연히 어미의 객체를 속성을 사용할 수 있다.
      ken.log();
    
      var ken = new Person();
      console.log(ken.constructor === Person); //true
    
  • __proto__ (Dunder Proto, 인스턴스가 엄마를 바로 가리킨다) 모던, IE10+, 웬만하면 사용하면 안된다. 사용한 경우 코드의 설계가 잘못됐을 확률이 높다.
      ken.constructor === Person;
      ken.__proto__ === Person.prototype;
    
  • Array.prototype.__proto__ === Object.prototype;
    Object.prototype.__proto__ === null; (null이 최상위에 존재)
    Person.prototype.__proto__ === Object.prototype; (객체는 new Object()를 이용하여 만든 것과 동일시할 수 있다.)

  • ken.toString() ??
    Object.prototype에 있기에 사용가능하다.

업데이트: