[Javascript] ES6: Reflect

[์›๋ณธ ๋งํฌ]

Reflect๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ฆฌํ”Œ๋ ‰์…˜ ์ฒ˜๋ฆฌ์šฉ ๊ฐ์ฒด๋‹ค.
๋ฆฌํ”Œ๋ ‰์…˜์ด๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋Ÿฐํƒ€์ž„์— ๋ฉ”์„œ๋“œ ๋“ฑ์„ ์ฒดํฌํ•˜๊ฑฐ๋‚˜ ์ฃผ์ž…ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์‚ฌ์‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๊ฒŒ ์—†์ด๋„ ์–ผ๋งˆ๋“ ์ง€ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ์ง€๋ผ ๊ผญ ํ•„์š”ํ•œ ๊ฑด ์•„๋‹ˆ๋‹ค๋งŒ. ์•ฝ๊ฐ„์˜ ํŽธ์˜์„ฑ๊ณผ, ๊ฐ€๋…์„ฑ/์ง๊ด€์„ฑ์„ ์ƒ์Šน์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ํ•˜๊ฒ ๋‹ค.




ํ”„๋กœํผํ‹ฐ ์ฒดํฌ(has)

ํŠน์ • ๊ฐ์ฒด์— ํŠน์ • ๋ฉค๋ฒ„๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
in ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•˜๋‹ค.





ํ”„๋กœํผํ‹ฐ ํš๋“(get)

ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ get ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋งŒ ์—ฌ๊ธฐ์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ฃผ์˜์ ์€

๋ฉ”์„œ๋“œ์˜ ์ปจํ…์ŠคํŠธ๊นŒ์ง€ ๊ฐ€์ ธ์˜ค์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์— this๊ฐ€ ์—†์–ด์„œ ๋ฐ”๋กœ ํ˜ธ์ถœ์€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.




ํ”„๋กœํผํ‹ฐ์˜ ์ถ”๊ฐ€(defineProperty)

ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด defineProperty๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
์ˆœ์„œ๋Œ€๋กœ ์ถ”๊ฐ€ํ•  ๋Œ€์ƒ, ์ถ”๊ฐ€ํ•  ํ”„๋กœํผํ‹ฐ๋ช…, ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
์ฃผ์ž…ํ•  ๊ฐ’์€ ์˜ค๋ธŒ์ ํŠธ์˜ value ํ•„๋“œ์— ๋„ฃ์–ด์ค€๋‹ค.

๋Œ€์ถฉ ์ด๋Ÿฐ ๊ธฐ๋Šฅ๋“ค์ด ๋‹ด๊ฒจ์žˆ๋‹ค.

์ด์™ธ์˜ ๊ธฐ๋Šฅ๋“ค์€ ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

์žˆ์œผ๋‹ˆ๊นŒ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋Š” ํ•˜๋Š”๋ฐ, ๊ตณ์ด ์“ธ์ผ์ด ์žˆ์„๋Ÿฐ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.


์ฐธ์กฐ
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Reflect