handler.deleteProperty()

handler.deleteProperty() 메서드는 delete (en-US) 연산자에 대한 트랩입니다.

시도해보기

구문

js
new Proxy(target, {
  deleteProperty(target, property) {},
});

매개 변수

다음 매개변수는 deleteProperty() 메서드에 전달됩니다. this는 처리기에 바인딩됩니다.

target

대상 객체

property

삭제할 이름 또는 속성의 Symbol입니다.

반환 값

deleteProperty() 메서드는 속성이 성공적으로 삭제되었는지를 나타내는 불리언을 반환합니다.

설명

handler.deleteProperty() 메서드는 delete (en-US) 연산자에 대한 트랩입니다.

가로채기

이 트랩은 다음 작업을 가로챌 수 있습니다.

불변 조건

다음 불변 조건이 위반되면 프록시에서 TypeError가 발생합니다.

  • 속성이 대상 객체의 구성할 수 없는 자체 속성으로 존재하는 경우, 속성을 삭제할 수 없습니다.

예제들

delete 연산자 가로채기

다음 코드는 delete (en-US) 연산자를 트랩합니다.

js
const p = new Proxy(
  {},
  {
    deleteProperty(target, prop) {
      if (!(prop in target)) {
        console.log(`property not found: ${prop}`);
        return false;
      }
      delete target[prop];
      console.log(`property removed: ${prop}`);
      return true;
    },
  },
);

p.a = 10;
console.log("a" in p); // true

const result1 = delete p.a; // "property removed: a"
console.log(result1); // true
console.log("a" in p); // false

const result2 = delete p.a; // "property not found: a"
console.log(result2); // false

명세서

Specification
ECMAScript Language Specification
# sec-proxy-object-internal-methods-and-internal-slots-delete-p

브라우저 호환성

BCD tables only load in the browser

같이 보기