handler.get()

handler.get() 메서드는 속성 값을 가져오기 위한 트랩입니다.

시도해보기

구문

js
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인 구성할 수 없는 자체 접근자 속성인 경우, 속성에 대해 보고된 값은 정의되지 않아야 합니다.

예제

속성 값을 얻기 위한 트랩

다음 코드는 속성 값을 가져오는 것을 트랩합니다.

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

같이 보기