2025. 8. 19. 15:21ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ๊ฐ์ฒด์ ์์ ํ์ ๋ณํ
3. ๋ฌธ์์ด๋ก ๋ณํ
4. ์ซ์ํ์ผ๋ก ๋ณํ
1. ๊ฐ์ฒด์ ์์ ํ์ ๋ณํ
obj1 + obj2, obj1 - obj2, alert(obj)์ฒ๋ผ ๊ฐ์ฒด๋ผ๋ฆฌ ์ฐ์ฐ์ ํ๊ฑฐ๋ ์ถ๋ ฅ์ ํ ๋ ์๋ ํ๋ณํ์ด ์ผ์ด๋๋ค.
๊ฐ์ฒด๊ฐ ์์๊ฐ์ผ๋ก ๋ณํ๋๊ณ , ๊ทธ ํ ์๋ํ ์ฐ์ฐ์ด ์ํ๋๋ค.
๊ฐ์ฒด์ ์์ ํ์ ๋ณํ์ ๋ช ์์ ๊ฐ์ ๋ณํ, ์์์ ๊ฐ์ ๋ณํ์์ ๋์ผํ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๊ฐ์ฒด์ ์์ ํ์ ๋ณํ์ ๋ฌธ์์ด๋ก์ ๋ณํ(string), ์ซ์๋ก์ ๋ณํ(number), default 3๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
๊ตฌ๋ถ์ ๊ธฐ์ค์ hint๊ฐ ๋๋๋ฐ, ๋ชฉํ๋ก ํ๋ ์๋ฃํ์ผ๋ก, ๋ช ์ธ์์ ์ค๋ช ์ด ์๋ค.
- ๊ฐ์ฒด๋ ๋ ผ๋ฆฌ ํ๊ฐ ์, ์์ธ์์ด true๋ฅผ ๋ฐํํ๋ค.
- ๊ฐ์ฒด๋ผ๋ฆฌ ์ํ ๊ด๋ จ ์ฐ์ฐ์ ํ๋ฉด ์ซ์ํ์ผ๋ก์ ํ ๋ณํ์ด ์ผ์ด๋๋ค.
- ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ๋ฌธ์ํ์ผ๋ก์ ํ ๋ณํ์ด ์ผ์ด๋๋ค.
2. ๋ฌธ์์ด๋ก ๋ณํ
๊ฐ์ฒด๊ฐ ๋ฌธ์์ด๋ก ๋ณํ๋๋ ๋จ๊ณ๋ ์๋์ ๊ฐ๋ค.
1. ๊ฐ์ฒด์ ์ ์๋ toString() ๋ฉ์๋ ํธ์ถ (๋ณ๋ ์ ์๋ ๊ฒ์ด ์๋ค๋ฉด Object.prototype.toString() ๋ฉ์๋ ์คํ)
2. 1๋จ๊ณ์ ๊ฒฐ๊ณผ๊ฐ ์์ ํ์
์ด๋ผ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํ
์์ํ์
์ด ์๋๋ผ๋ฉด valueOf() ๋ฉ์๋ ํธ์ถ
3. valueOf() ๋ฉ์๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์์ ํ์ ์ด๋ผ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํ
์์ํ์ ์ด ์๋๋ผ๋ฉด TypeError ๋ฐ์
console.log(String({})); // '[Object object]'
์์์ ๊ฐ์ด ๋น ๊ฐ์ฒด๋ฅผ ๋ณํํ๋ค๋ฉด
1. Object.prototype.toString() ๋ฉ์๋ ์คํ
2. 1๋จ๊ณ์ ๊ฒฐ๊ณผ๊ฐ์ [Object object]๋ก, ์์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
- alert() : ์๋ ํ๋ณํ
- String() : ๊ฐ์ ํ๋ณํ
3. ์ซ์ํ์ผ๋ก ๋ณํ
๊ฐ์ฒด๊ฐ ์ซ์๋ก ๋ณํ๋๋ ๋จ๊ณ๋ ์๋์ ๊ฐ๋ค.
1. ๊ฐ์ฒด์ ์ ์๋ valueOf() ๋ฉ์๋ ํธ์ถ (๋ณ๋ ์ ์๋ ๊ฒ์ด ์๋ค๋ฉด Object.prototype.valueOf() ๋ฉ์๋ ์คํ)
2. 1๋จ๊ณ ๊ฒฐ๊ณผ๊ฐ ์์ํ์ ์ด๋ผ๋ฉด, ๊ฒฐ๊ณผ๋ฅผ ์ซ์๋ก ๋ณํํ์ฌ ๋ฐํ
์์ํ์ ์ด ์๋๋ผ๋ฉด toString() ๋ฉ์๋ ํธ์ถ
3. toString() ๋ฉ์๋์ ๊ฒฐ๊ณผ ๊ฐ์ด ์์ ํ์ ์ด๋ผ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ซ์๋ก ๋ณํํ์ฌ ๋ฐํ
์์ํ์ ์ด ์๋๋ผ๋ฉด TypeError ๋ฐ์
console.log(Number({})); // NaN
์์์ ๊ฐ์ด ๋น ๊ฐ์ฒด๋ฅผ ๋ณํํ๋ค๋ฉด
1. Object.prototype.valueOf() ๋ฉ์๋ ํธ์ถ
2. 1๋จ๊ณ์ ๊ฒฐ๊ณผ๊ฐ์ ๋น ๊ฐ์ฒด ๊ทธ๋๋ก์ด๊ธฐ ๋๋ฌธ์, toString() ๋ฉ์๋ ํธ์ถ
3. toSting()์ ๊ฒฐ๊ณผ๊ฐ์ [Object object]๋ก, ์ซ์๋ก ๋ณํ์ด ๋ถ๊ฐํ๋ฏ๋ก NaN ๋ฐํ
- Number() : ๊ฐ์ ํ๋ณํ
- ๋น๊ต ์ฐ์ฐ์ <, > : ์๋ ํ๋ณํ
** ๊ฐ์ฒด์ valueOf()์ toString() ๋ฉ์๋๋ฅผ ์ง์ ์ ์ํ๋ฉด ํ์ ๋ณํ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
** ๋ฐฐ์ด, Date, ์ ๊ท์๊ณผ ๊ฐ์ด ํน์ํ ๊ฐ์ฒด๋ค์ ์์ฒด์ ์ธ toString(), valueOf()๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
4. default
์ฐ์ฐ์๊ฐ ๋ณํ๋ ์๋ฃํ์ด ํ์ค์น ์์ ๋ defaul๊ฐ ๋๋ค.
๋ง์ ์ฐ์ฐ์(+)๋ ํผ์ฐ์ฐ์์ ์๋ฃํ์ ๋ฐ๋ผ ๋ฌธ์์ด์ ํฉ์น๋ ์ฐ์ฐ์ ํ ์๋ ์๊ณ , ์ซ์๋ฅผ ๋ํ๋ ์ฐ์ฐ์ ํ ์๋ ์๋ค.
๋๋ฑ ์ฐ์ฐ์(==)๋ ๊ฐ์ฒด-๋ฌธ์ํ, ๊ฐ์ฒด-์ซ์ํ, ๊ฐ์ฒด-์ฌ๋ณผํ๋ผ๋ฆฌ ๋น๊ตํ ๋ ๊ฐ์ฒด๋ฅผ ์ด๋ค ์๋ฃํ์ผ๋ก ๋ฐ๊ฟ์ผํ ์ง ํ์ ์ด ์์ผ๋ฏ๋ก
hint๊ฐ default๊ฐ ๋๋ค.
let total = obj1 + obj2;
if(user == 1) {...};
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| B15 : ๊ฐ์ฒด์ ๋ฉ์๋ (0) | 2025.08.19 |
|---|---|
| B14 : ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection) (1) | 2025.08.19 |
| B14 : ๊ฐ์ฒด์ ๋ณต์ฌ (0) | 2025.08.19 |
| B13 : ์ ๊ทผ์ ํ๋กํผํฐ (Accessor Property) (0) | 2025.08.19 |
| B12 : ๊ฐ์ฒด (0) | 2025.08.19 |
GitHub