handler.set()
handler.set()
메서드는 속성 값을 설정을 위한 트랩입니다.
시도해보기
구문
new Proxy(target, {
set(target, property, value, receiver) {
}
});
매개 변수
다음 매개변수는 set()
메서드에 전달됩니다. this
는 처리기에 바인딩됩니다.
target
-
대상 객체
property
-
설정할 속성의 이름 또는
Symbol
value
-
설정할 속성의 새 값
receiver
-
할당이 지시된 원래 객체입니다. 이것은 일반적으로 프록시 자체입니다. 그러나
set()
처리기는 프로토타입 체인이나 다양한 다른 방법 등을 통해 간접적으로 호출할 수도 있습니다.예를 들어, 스크립트가
obj.name = "jen"
을 수행하는데,obj
는 프록시가 아니면서 속성.name
이 없고, 프로토타입 체인에는 프록시가 있다고 가정해봅시다. 이떄 해당 프록시의set()
처리기가 호출되고나서obj
가 수신자로 전달됩니다.
반환 값
set()
메서드는 불리언 값을 반환합니다.
- 할당이 성공했으면
true
를 반환합니다. - 엄격 모드에서
set()
메서드가false
를 반환하면TypeError
예외가 발생합니다.
설명
handler.set()
메서드는 속성 값을 설정을 위한 트랩입니다.
가로채기
이 트랩은 다음 작업을 가로챌 수 있습니다.
- 속성 할당:
proxy[foo] = bar
와proxy.foo = bar
-
상속된 속성 할당:
Object.create(proxy)[foo] = bar
Reflect.set()
불변 조건
예제
속성 값 설정 트랩
다음 코드는 속성 값을 설정하는 것을 트랩합니다.
const p = new Proxy({}, {
set(target, prop, value, receiver) {
target[prop] = value;
console.log(`property set: ${prop} = ${value}`);
return true;
}
})
console.log('a' in p); // false
p.a = 10; // "property set: a = 10"
console.log('a' in p); // true
console.log(p.a); // 10
명세서
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver |
브라우저 호환성
BCD tables only load in the browser