JavaScript

๊ฐ์ฒด์˜ ๊นŠ์€ ๋ณต์‚ฌ vs ์–•์€ ๋ณต์‚ฌ

Dana10 2025. 1. 6. 22:23

์˜ค๋Š˜ ์ด ๊ธ€์„ ์“ฐ๋Š” ์ด์œ ๋Š”,

function applyCoupon(cart, coupon) {
  cart.items.forEach((item) => {
    item.price -= coupon.discount;
  });
}

const userACart = {
  items: [
    { name: "ํ‚ค๋ณด๋“œ", price: 30000 },
    { name: "๋งˆ์šฐ์Šค", price: 20000 },
  ],
};

const userBCart = userACart;
const coupon = { discount: 5000 };

applyCoupon(userBCart, coupon);



userACart์™€ userBCart๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€.

๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— ์ž์‹ ์žˆ๊ฒŒ ๋Œ€๋‹ตํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ผ๋‹จ userACart์™€ userBCart๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ถ€ํ„ฐ ๋ณด์ž๋ฉด,

userBCart์— userACart๋ฅผ ํ• ๋‹นํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰, userACart๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’์„ userBCart๊ฐ€ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•˜์—ฌ ์ฐธ์กฐ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด์„œ ๋‘ ๋ณ€์ˆ˜ ๋ชจ๋‘ ์˜ํ–ฅ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ userBCart์— userACart๋ฅผ ๊นŠ์€ ๋ณต์‚ฌํ•˜์—ฌ ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์™œ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•ด์•ผํ•˜๋А๋ƒ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์•˜์„ ๋•Œ, ์ˆœ๊ฐ„ ๋จธ๋ฆฟ์†์ด ํ•˜์–˜์กŒ๋‹ค.

์–•์€ ๋ณต์‚ฌ๋Š” { ...userACart } ์ด๋ ‡๊ฒŒ ์Šคํ”„๋ ˆ๋“œ๋กœ ํ’€์–ด์„œ ์“ฐ๋ฉด ๋ผ !

๊นŠ์€ ๋ณต์‚ฌ๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ !

 

์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์•„๋Š” ๊ฑด ์—ฌ๊ธฐ๊นŒ์ง€์˜€๋‹ค.

์–•์€ ๋ณต์‚ฌ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ , ๊นŠ์€ ๋ณต์‚ฌ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”์ง€์— ๋Œ€ํ•ด ์ž˜ ์ธ์ง€ํ•˜์ง€ ๋ชป ํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด ๊ธ€์„ ์“ฐ๋ฉด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

1. ์–•์€ ๋ณต์‚ฌ

  • ์–•์€ ๋ณต์‚ฌ๋Š” ์ตœ์ƒ์œ„ ๊ฐ์ฒด์˜ ์†์„ฑ ๊ฐ’๋“ค๋งŒ ๋ณต์‚ฌํ•œ๋‹ค.
  • ๊ฐ์ฒด ์†์„ฑ ์ค‘ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๊ฐ™์€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š๊ณ  ์›๋ž˜์˜ ์ฐธ์กฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„œ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ ๋Š” (์—ฌ๊ธฐ์„œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ดํ•ด๋ฅผ ์‰ฝ๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜๋กœ ์ •ํ•œ ๊ฐ’)

1. userACart๋Š” @7001 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

2. userACart๋ฅผ ์–•์€ ๋ณต์‚ฌํ•˜์—ฌ userBCart์— ํ• ๋‹นํ•œ๋‹ค๋ฉด, userBCart๋Š” @7002 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

3. userACart (@7001) ๋‚ด๋ถ€์˜ items๋Š” ๋ฐฐ์—ด ์ฆ‰ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋กœ @8001 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

4. ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— userBCart (@7002) ๋‚ด๋ถ€์˜ items๋Š” ๊ทธ๋Œ€๋กœ @8001 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋”๋ผ๋„, ๋‚ด๋ถ€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ (items)๊ฐ€ ์—ฌ์ „ํžˆ  @8001 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ์ฒด๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

 

๊ทธ๋Ÿผ ์–•์€ ๋ณต์‚ฌ๋Š” ์–ธ์ œ ํ•˜๋ฉด ์ข‹์„๊นŒ?

๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ์†์„ฑ ๊ฐ’์„ ๋‹จ์ˆœํžˆ ์ฝ๊ธฐ๋งŒ ํ•œ๋‹ค๊ฑฐ๋‚˜ ์ตœ์ƒ์œ„ ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

// ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์–ด๋ฐ›์•„ userBCart์—๋งŒ ์ƒˆ๋กœ์šด property๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
userBCart.userName = "Dana"; 

console.log(userACart);
// {items: [ { name: 'ํ‚ค๋ณด๋“œ', price: 25000 }, { name: '๋งˆ์šฐ์Šค', price: 15000 } ]}

console.log(userBCart);
// {items: [ { name: 'ํ‚ค๋ณด๋“œ', price: 25000 }, { name: '๋งˆ์šฐ์Šค', price: 15000 } ],userName : 'Dana'}

userBCart์—๋งŒ { userName : 'Dana' }๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋Š” @7002๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์—๋งŒ ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

2. ๊นŠ์€ ๋ณต์‚ฌ

  • ๊นŠ์€ ๋ณต์‚ฌ๋Š” ๊ฐ์ฒด ๋‚ด ๋ชจ๋“  ๊ณ„์ธต์— ์กด์žฌํ•˜๋Š” ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • ์ฆ‰ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‚˜๋Š” ์œ„์˜ ๋ฌธ์ œ์—์„œ ๋‘ ๋ณ€์ˆ˜๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด userBCart๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ๋‹ค.

 const userBCart = {
    items : userACart.items.map((item) => {
    	return {...item}
    })
  };

 

items๊นŒ์ง€ ์ง์ ‘ ๋“ค์–ด๊ฐ€๊ณ  map์ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฑ‰์–ด๋‚ด๋Š” ์ ์„ ์ด์šฉํ•˜์—ฌ

items ๋‚ด๋ถ€์˜  { name : ... , price : ..} ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ์–•์€ ๋ณต์‚ฌํ•˜์˜€๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐ์ฒด๋“ค์„ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ ๋Š”

๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๊ฐ’๋“ค์ด ๋ชจ๋‘ ๊ฐ’์„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ €์žฅํ•˜๋Š” ์›์‹œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด ๋ฌธ์ œ์—์„œ๋Š” ํ•ด๋‹น ์ฝ”๋“œ๋กœ๋„ ํ•ด๊ฒฐ์ด ๋˜์—ˆ์ง€๋งŒ

๋งŒ์•ฝ ๊ฐ์ฒด ๋‚ด๋ถ€์— ๋˜ ๋‹ค๋ฅธ ์ค‘์ฒฉ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‘ ๋ณ€์ˆ˜๋Š” ์œ„ ์ฝ”๋“œ๋กœ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์€ ์ฐธ๊ณ ํ•ด ๋‘์ž.