S07. dunderproto
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에 있기에 사용가능하다.