handler.get()
handler.get()
메서드는 속성 값을 가져오기 위한 트랩입니다.
시도해보기
구문
js
new Proxy(target, {
get(target, property, receiver) {},
});
매개 변수
반환 값
get()
메서드는 어떤 값이든 반환할 수 있습니다.
설명
handler.get()
메서드는 속성 값을 가져오기 위한 트랩입니다.
가로채기
이 트랩은 다음 작업을 가로챌 수 있습니다.
-
속성 접근:
proxy[foo]
와proxy.bar
-
상속된 속성 액세스:
Object.create(proxy)[foo]
Reflect.get()
불변 조건
다음 불변량이 위반되면 프록시에서 TypeError
가 발생합니다.
- 대상 객체의 속성이 쓸 수 없거나 구성할 수 없는 자체 데이터 속성인 경우, 속성에 대해 보고된 값은 대상 객체 속성의 값과 동일해야 합니다.
- 대상 객체 속성이
[[Get]]
특성이undefined
인 구성할 수 없는 자체 접근자 속성인 경우, 속성에 대해 보고된 값은 정의되지 않아야 합니다.
예제
속성 값을 얻기 위한 트랩
다음 코드는 속성 값을 가져오는 것을 트랩합니다.
js
const p = new Proxy(
{},
{
get(target, property, receiver) {
console.log(`called: ${property}`);
return 10;
},
},
);
console.log(p.a); // "called: a"
// 10
다음 코드는 불변 조건을 위반합니다.
js
const obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: false,
value: 10,
writable: false,
});
const p = new Proxy(obj, {
get(target, property) {
return 20;
},
});
p.a; // TypeError is thrown
명세서
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver |
브라우저 호환성
BCD tables only load in the browser