๐ ๋ชฉ์ฐจ
- Introduction
- What is proxy?
- Basic Example of Proxy
- Conclusion
- Reference
๐ Introduction
์๋ ํ์ธ์. ์ด๋ฒ์ Vue3 ๊ณต๋ถ์ ๋๋ง์ ํ๋ ์์ํฌ ๋ง๋ค๊ธฐ์์ ๋์จ Proxy๋ผ๋ ๊ฐ๋ ์ด ์์ํ์ฌ ๊ฐ๋ ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
๐ What is proxy?
Proxy๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ์์์ ๊ธฐ๋ณธ ์์ ์ ๋ํ ํ์์ ๋ํด ์ฌ์ฉ์ ์ปค์คํ ๋์์ ์ ์ํ ๋ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ธ Proxy ์ฌ์ฉ:
new Proxy(target, handler);
target์ Proxy๋ก ๋ฉํํ ๋์ ๊ฐ์ฒด๋ฅผ ์ง์ ํด์ฃผ๊ณ handler๋ Proxy์ ๋์์ ์ ์ํ๋ ํจ์ ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ค๋๋ค.
๐ Basic Example of Proxy
๋ง์ฝ ํธ๋ค๋ฌ๋ฅผ ์ง์ ์ ํด์ฃผ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
const target = {
message1: "hello",
message2: "hi",
};
const handler1 = {};
const proxy1 = new Proxy(target, handler1);
console.log(proxy1.message1); // hello
console.log(proxy1.message2); // hi
๊ทธ๋ ๋ค๋ฉด ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด์ ๋์ผํ๊ฒ ๋์์ ํฉ๋๋ค. handler์๋ get, set, has, defineProperty, deleteProperty, construct, apply ๋ฑ ์ด 13๊ฐ์ง ํจ์๋ฅผ ํธ๋ค๋ง ํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ get์ ์ฌ์ฉํ์ฌ Proxy๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
const target = {
message1: "hello",
message2: "hi",
};
const handler = {
get: function (target, prop, receiver) {
console.log("target", target);
console.log("prop", prop);
console.log("receiver", receiver);
return 10;
},
};
const proxy = new Proxy(target, handler);
console.log(proxy.message1);
// target { message1: 'hello', message2: 'hi' }
// prop message1
// receiver { message1: 'hello', message2: 'hi' }
// 10
console.log(proxy.message2);
// target { message1: 'hello', message2: 'hi' }
// prop message2
// receiver { message1: 'hello', message2: 'hi' }
// 10
๐ Conclusion
์ด๋ ๊ฒ Proxy๊ฐ์ฒด์ ๋ํด ๋ง๋ค์ด๋ณด์์ต๋๋ค. proxy์ ์ฌ์ฉ๋ฒ์ ์ ๋๋ก ๋ชจ๋ฅด๊ณ ์์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌ๋ฅผ ํด๋ณด์์ต๋๋ค.
๐ Reference
'Javascript Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
call, apply, bind (0) | 2020.10.18 |
---|---|
Reduce์ ๋ํ ๊ณ ์ฐฐ (2) | 2020.07.24 |