Proxy() constructor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Proxy
생성자는 Proxy
객체를 만드는 데 사용됩니다.
구문
매개변수
설명
Proxy()
생성자를 사용하여 새 Proxy
객체를 만듭니다. 이 생성자는 두 가지 필수 인수를 사용합니다.
target
은 프록시를 만들려는 대상 개체입니다.handler
는 작업이 수행될 때 프록시의 동작을 정의하는 속성이 함수인 객체입니다.
빈 핸들러는 거의 모든 면에서 대상 객체와 똑같은 동작을 하는 프록시가 생성되며, handler
객체에서 함수의 집합을 정의하여 프록시의 특정 동작을 커스텀할 수 있습니다. 예를 들어, get()
을 정의하여 대상 속성 접근자의 사용자 정의 버전을 제공할 수 있습니다.
Handler 함수
이 섹션에서는 정의할 수 있는 모든 처리기 함수를 나열합니다. 처리기 함수는 기본 대상 객체에 대한 호출을 가로채기 때문에 트랩(traps)이라고도 합니다.
handler.apply()
-
함수 호출에 대한 트랩.
handler.construct()
-
new
연산자에 대한 트랩. handler.defineProperty()
-
Object.defineProperty
에 대한 트랩. handler.deleteProperty()
-
delete
연산자에 대한 트랩. handler.get()
-
속성 값을 가져오기(get) 위한 트랩.
handler.getOwnPropertyDescriptor()
-
Object.getOwnPropertyDescriptor
에 대한 트랩. handler.getPrototypeOf()
-
Object.getPrototypeOf
에 대한 트랩. handler.has()
-
in
연산자에 대한 트랩. handler.isExtensible()
-
Object.isExtensible
에 대한 트랩. handler.ownKeys()
-
Object.getOwnPropertyNames
와Object.getOwnPropertySymbols
에 대한 트랩 handler.preventExtensions()
-
Object.preventExtensions
에 대한 트랩 handler.set()
-
속성 값 설정(set)에 대한 트랩.
handler.setPrototypeOf()
-
Object.setPrototypeOf
에 대한 트랩.
예제들
선택적 프록시 속성 접근자
이 예제의 대상 객체는 notProxied
와 proxied
속성을 가지고 있습니다. 우리는 proxied
에 대해 다른 값을 반환하는 처리기를 정의하고 다른 모든 액세스는 대상 객체를 통해 수행되도록 할 것입니다.
const target = {
notProxied: "original value",
proxied: "original value",
};
const handler = {
get(target, prop, receiver) {
if (prop === "proxied") {
return "replaced value";
}
return Reflect.get(...arguments);
},
};
const proxy = new Proxy(target, handler);
console.log(proxy.notProxied); // "original value"
console.log(proxy.proxied); // "replaced value"
명세서
Specification |
---|
ECMAScript Language Specification # sec-proxy-constructor |
브라우저 호환성
BCD tables only load in the browser