본문 바로가기

자바스크립트

[Javascript] - 프로토타입 메서드와 __proto__ 가 없는 객체

 

__proto__는 브라우저를 대상으로 개발하고 있다면 다소 구식이기 때문에 사용하지 않는 것이 좋다 표준에도 관련 내용이 명시되어 있다 대신 다음과 같은 모던한 메서드를 사용하자

 

 

1 Object.create(proto, [descriptors]): [[Prototype]]이 proto를 참조하는 빈 객체를 만든다 이때 프로퍼티 설명자를 선택적으로 추가로 넘길 수 있다.

 

2. Object.getPrototype(obj): obj의 [Prototype]]을 반환한다.

 

3. Object.setPrototypeOf(obj, proto): obj의 [[Prototype]]이 proto 가 되도록 설정한다.

 

 

- 위에서 언급한대로 Object.create에는 프로퍼티 설명자를 선택적으로 전달할 수 있다 위 예제는 설명자를 이용해 새 ㄱ개체에 프로퍼티를 추가한 예제이다.

 

 

- Object.create를 사용하면 for... in을 사용해 프로퍼티를 복사하는 것보다 더 효과적으로 객체를 복제할 수 있다.

-  Object.create를 호출하면 인수로 넘기는 obj의 모든 프로퍼티를 포함한 완벽한 사본이 만들어진다 사본에는 열거 가능한 프로퍼티와 불가능한 프로퍼티 데이터 프로퍼티 getter, setter등 모든 프로퍼티가 복제된다.

[[Prototype]] 역시 복제된다

 

- 단 depth가 1인 부분까지만 깊은 복사가 된다