본문 바로가기
JavaScript

객체 전용 메서드란?

by whoyoung90 2022. 6. 6.
반응형

프로토타입 체이닝으로 인해

어떤 생성자 함수이든 prototype은 반드시 "객체"이기 때문에

Object.prototype이 언제나 프로토타입 체인의 최상단에 존재하게 된다.

 

따라서 객체에서만 사용할 메서드(객체 전용 메서드)는 프로토타입 객체 안에 정의할 수가 없다.

 

왜냐하면 Object.prototype은 다른 데이터 타입이 __proto__에 반복 접근함으로써 도달할 수 있는 최상위 존재이기 때문!

= 다른 데이터타입도 프로토타입 체이닝을 통해 거슬러 올라가 해당 메서드를 사용할 수 있기 때문

= Object.prototype에 메서드를 만드는 순간 다른 데이터타입에서 사용가능

> 객체 전용 메서드 구현방법은?

이와같은 이유로 객체 전용 메서드들은

Object.prototype이 아닌 Object에 직접 부여(스태틱 메서드)할 수밖에 없다.

 

또한 생성자 함수인 Object와 인스턴스인 객체 리터럴 사이에는 this를 통한 연결이 불가능 하기 때문에

this의 사용을 포기하고 대상 인스턴스를 인자로 직접 주입하는 방식으로 구현되어 있다.

/* 객체 전용 메서드 */
Object.freeze(instance);          // instance(.__proto__).freeze() X
Object.getPrototypeOf(instance);  // instance(.__proto__).getPrototype() X

> 디렉터리 구조로 확인해보자

1. 어떤 데이터 타입에서도 활용할 수 있는 범용적인 메서드들이 존재 Object.prototype

console.dir({a : 1})

Object.prototype

 

2. 객체에서만 사용할 객체 전용 메서드

console.dir(Object)

Object 출력 결과

반응형

댓글