handler.get()
handler.get()
메서드는 속성 값을 가져오기 위한 트랩입니다.
시도해보기
구문
new Proxy(target, {
get(target, property, receiver) {
}
});
매개 변수
다음 매개변수는 get()
메서드에 전달됩니다. this
는 처리기에 바인딩됩니다.
target
-
대상 객체
property
-
가져올 속성의 이름 또는
Symbol
입니다. receiver
-
프록시 또는 프록시에서 상속되는 객체입니다.
반환 값
get()
메서드는 어떤 값이든 반환할 수 있습니다.
설명
handler.get()
메서드는 속성 값을 가져오기 위한 트랩입니다.
가로채기
이 트랩은 다음 작업을 가로챌 수 있습니다.
-
속성 접근:
proxy[foo]
와proxy.bar
-
상속된 속성 액세스:
Object.create(proxy)[foo]
Reflect.get()
불변 조건
다음 불변량이 위반되면 프록시에서 TypeError
가 발생합니다.
- 대상 객체의 속성이 쓸 수 없거나 구성할 수 없는 자체 데이터 속성인 경우, 속성에 대해 보고된 값은 대상 객체 속성의 값과 동일해야 합니다.
- 대상 객체 속성이
[[Get]]
특성이undefined
인 구성할 수 없는 자체 접근자 속성인 경우, 속성에 대해 보고된 값은 정의되지 않아야 합니다.
예제
속성 값을 얻기 위한 트랩
다음 코드는 속성 값을 가져오는 것을 트랩합니다.
const p = new Proxy({}, {
get(target, property, receiver) {
console.log(`called: ${property}`);
return 10;
},
});
console.log(p.a); // "called: a"
// 10
다음 코드는 불변 조건을 위반합니다.
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