Javascript Study

Proxy

2020. 10. 26. 12:54
๋ชฉ์ฐจ
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is proxy?
  4. ๊ธฐ๋ณธ์ ์ธ Proxy ์‚ฌ์šฉ:
  5. ๐Ÿ“Œ Basic Example of Proxy
  6. ๐Ÿ“Œ Conclusion
  7. ๐Ÿ“Œ Reference
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • 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

  • NHN Toast ๋‚˜๋งŒ์˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋งŒ๋“ค๊ธฐ
  • MDN Proxy
  • dev-momo ํ‹ฐ์Šคํ† ๋ฆฌ
๋ฐ˜์‘ํ˜•

'Javascript Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

call, apply, bind  (0) 2020.10.18
Reduce์— ๋Œ€ํ•œ ๊ณ ์ฐฐ  (2) 2020.07.24
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is proxy?
  4. ๊ธฐ๋ณธ์ ์ธ Proxy ์‚ฌ์šฉ:
  5. ๐Ÿ“Œ Basic Example of Proxy
  6. ๐Ÿ“Œ Conclusion
  7. ๐Ÿ“Œ Reference
'Javascript Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • call, apply, bind
  • Reduce์— ๋Œ€ํ•œ ๊ณ ์ฐฐ
eddie0329
eddie0329
Front-end Developer
๋ฐ˜์‘ํ˜•
eddie0329
Eddie Sunny's Blog
eddie0329
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • ์žก๋‹ด (0)
    • Swift (19)
    • Rust (2)
    • ํšŒ์‚ฌ์ด์•ผ๊ธฐ (2)
    • ReactNative Study (2)
    • Vitest (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • Home

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • swift
  • react
  • react useRef
  • Vue
  • storybook6
  • Cypress
  • swift5
  • Javascript
  • Kotlin
  • BDD
  • javascript pattern
  • vue storybook
  • Vue test
  • vue3
  • D3
  • apollo
  • vue cypress
  • vue bdd
  • react-component-slot
  • svelte
  • TDD
  • slot ํŒจํ„ด
  • TypeScript
  • React Native
  • Design Pattern
  • vue tdd
  • Nextjs
  • CSS
  • jest
  • client only

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
eddie0329
Proxy
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.