A instanceof B는
"A의 __proto__ 체인 중에 B.prototype이 있는가?"를 검사함.
Object instanceof Function을 평가하는 과정
console.log(Object.__proto__); // Function.prototype
console.log(Function.prototype); // Function 객체의 prototype
console.log(Object.__proto__ === Function.prototype); // true
Object.__proto__는 왜 Function.prototype을 가리키는가?
"Object의 __proto__는 Object.prototype이 아니야?"
__proto__는 "객체가 생성될 때 사용한 생성자의 .prototype을 참조"하는 것이지, 무조건 자기 자신의 .prototype 가리키는게 아님.
JavaScript에서 Object, Function 같은 내장 객체들은 함수 객체이면서 생성자 함수라서, 그 자체의 __proto__가 다르게 설정되어 있어. Object 자체는 일반객체가 아닌 함수(생성자 함수)야!
그래서 Function의 인스턴스처럼 동작하기 때문에 그 __proto__는 Function.prototype을 가리켜.
Object (생성자 함수)
├── __proto__ → Function.prototype
├── prototype → Object.prototype
Function (생성자 함수)
├── __proto__ → Function.prototype (자기 자신)
├── prototype → Function.prototype
'Javascript' 카테고리의 다른 글
헷갈리는 prototype - Object와 Function 관계 총정리 (0) | 2025.04.05 |
---|---|
왜 Object.prototype.__proto__가 null인지? (0) | 2025.03.27 |
혼자 공부하는 자바스크립트 3일차 - Ch4 반복문 (0) | 2024.08.04 |
혼자 공부하는 자바스크립트 2일차 - Ch2 자료와 변수 (0) | 2024.08.01 |
혼자 공부하는 자바스크립트 1일차 - Ch1 자바스크립트 개요와 개발환경 설정 (0) | 2024.07.31 |
댓글