B15 : ๊ฐ์ฒด to ์›์‹œ ํƒ€์ž… ๋ณ€ํ™˜

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) {...};

 

 

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•