프로토타입 상속
프로토타입 상속
-
JS의 모든 객체엔 숨김 [[Prototype]] 이 있고 이 프로퍼티는 상속(참조) 하고 있는 객체나 null 가리킴
-
obj.proto 사용 시 프로토타입에 접근. proto는 [[Prototype]]의 gettter나 setter 로 쓰임(요즘엔 잘 안 씀)
-
[[Prototype]] 이 참조하는 객체를 ‘프로토타입’ 이라고 함
-
프로토타입 체이닝은 순환 참조 허용하지 않으며 proto 의 값은 객체나 null 만 가능
-
대상 obj 에서 프로퍼티 읽거나 메서드 호출 시 해당하는 것이 없을 경우 JS는 프로토타입에서 찾음
-
접근자 프로퍼티 다루면 쓰기나 지우기 관련 연산은 해당 객체가 아닌 접근자 프로퍼티가 정의된 객체에 적용됨
-
프로토타입에서 상속받은 method 라도 obj.method() 호출 시 method 안의 this 는 호출 대상 객체인 obj 가리킴
-
for…in 반복문은 객체 자체에서 정의한 프로퍼티뿐만 아니라 상속 프로퍼티도 순회 대상에 포함. 하지만 키-값 관련 내장 메서드 대부분은 상속 프로퍼티 제외하고 객체 자체 프로퍼티 대상으로 동작
-
obj.hasOwnProperty(key) 는 해당 프로퍼티가 상속 프로퍼티가 아니고 obj에 직접 구현됐을시 true/false
-
obj.hasOwnProperty(key) 사용해서 상속 프로퍼티를 순회대상에서 제외 가능
-
Object.prototype 에 있는 모든 메서드의 enumerable 플래그는 false 라 for…in 으로 순회 불가능.