handler.deleteProperty()

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

시도해보기

구문

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

매개 변수

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

target

대상 객체

property

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

반환 값

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

설명

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

가로채기

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

불변 조건

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

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

예제들

delete 연산자 가로채기

다음 코드는 delete 연산자를 트랩합니다.

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

같이 보기