본문 바로가기
카카오_구름/자바스크립트 심화

6. [Proxy Trap 5~7챕터] 자바스크립트 완전 끝내기: ES6+ 심화

by 코린이의 세계 2024. 9. 11.
5. defineProperty(), preventExtensions() , isExtensible() 트랩

Object.defineProperty() 정적 메서드는 객체에 새로운 속성을 직접 정의하거나 이미 존재하는 속성을 수정한 후, 해당 객체를 반환합니다.

Object.preventExtensions() 메서드는 새로운 속성이 이제까지 객체에 추가되는 것을 방지합니다 (즉 객체의 장래 확장을 막습니다).

Object.isExtensible() 메서드는 객체가 확장 가능한지(객체에 새 속성을 추가할 수 있는지 여부)를 결정합니다.


6. getPrototypeof(), setPrototypeof() 트랩

Object.getPrototypeOf() 메서드는 지정된 객체의 프로토타입(가령 내부 [[Prototype]] 속성값)을 반환합니다.

정적 메서드는 지정된 객체의 Object.setPrototypeOf()프로토타입(즉, 내부 속성)을 다른 객체로 설정합니다.


7. construct(), apply(), ownKeys(), getOwnPropertyDescriptor() 트랩

handler.construct() 메서드는 new 연산자에 대한 트랩입니다. 결과 Proxy 객체에서 new 연산이 유효하려면 프록시를 초기화하는 데 사용되는 대상 객체 자체에 내부 [[Construct]] 메서드가 있어야 합니다(즉, new target이 유효해야 함).

이 함수들을 결국 this을 이용해주는 함수이다.. 차이점은 다음과 같다.

call(this로 사용될 값, 호출할 함수의 매개변수들... ) 

apply(this로 사용될 값, 호출할 함수의 매개변수들을 배열로 받는다. )  

ownKeys()는 target의 모든 key를 배열로 반환하는 함수입니다.

Object.getOwnPropertyDescriptor() 메서드는 주어진 객체 자신의 속성(즉, 객체에 직접 제공하는 속성, 객체의 프로토타입 체인을 따라 존재하는 덕택에 제공하는 게 아닌)에 대한 속성 설명자(descriptor)를 반환합니다.

또한 이 메서드는 정확한 속성 설명의 검사를 허용합니다.