๐ Reference
๐ Chapter
Reflect๊ฐ ๋์
๋๊ธฐ ์ , JavaScript์ ๊ฐ์ฒด ์กฐ์ ๋ฐฉ์์ ๋ค์ ์ผ๊ด์ฑ์ด ์๊ณ ๋ถํธํ๋ค.
Object.defineProperty() ํจ์๋ฅผ ์ฐ๋๋ฐ, ์์ฑ์ด ์กด์ฌํ๋์ง ํ์ธํ ๋๋ in ์ฐ์ฐ์๋ฅผ ์ฐ๊ณ , ์์ฑ์ ์ง์ธ ๋๋ delete ์ฐ์ฐ์๋ฅผ ์ผ๋ค.Object.defineProperty๋ ์คํจํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถ๋ ์๋ฌ(TypeError)๋ฅผ ๋์ง์ง๋ง, delete๋ ์์ฑ ์ถ๊ฐ๋ ์คํจํด๋ ๊ทธ๋ฅ false๋ฅผ ๋ฐํํ๊ฑฐ๋ ์กฐ์ฉํ ๋ฌด์๋์ด ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์ ๋ค.Reflect๋ ์ด๋ฌํ ๋ฐฉ์๋ค์ "๋ชจ๋ ํจ์ ํํ๋ก ํต์ผํ๊ณ , ๊ฒฐ๊ณผ๋ ์ผ๊ด๋๊ฒ true/false๋ก ๋ฐํํ์!"๋ผ๋ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ํ์ด๋ฌ๋ค.// ๊ธฐ์กด ๋ฐฉ์ (๊ตฌ๋ฌธ๊ณผ ํจ์๊ฐ ๋ค์์)
const hasProp = 'name' in obj;
const deleteResult = delete obj.age;
// Reflect ๋ฐฉ์ (๋ชจ๋ ๊น๋ํ ํจ์ํ ์ฝ๋๋ก ํต์ผ)
const hasPropReflect = Reflect.has(obj, 'name');
const deleteResultReflect = Reflect.deleteProperty(obj, 'age'); // ์ฑ๊ณต ์ true, ์คํจ ์ false ๋ฐํ