๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘‍๐Ÿ—จFRONT-END/๐Ÿงฉ JavaScript

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ ๋ณต์‚ฌ ๋น„๊ต( ๊ธฐ๋ณธํ˜•๋ฐ์ดํ„ฐ, ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ)

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2023. 2. 13.

์•„๋ž˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋‹ค ์ดํ•ดํ–ˆ๋‹ค๋Š” ๊ฐ€์ •์—์„œ ์“ฐ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.!!

 

๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ(๋ถˆ๋ณ€์„ฑ, ๊ฐ€๋ณ€์„ฑ)

๋ถˆ๋ณ€๊ฐ’ ๋ณ€์ˆ˜์™€, ์ƒ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์„ฑ์งˆ์€ "๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ" ์ž…๋‹ˆ๋‹ค. ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉด ๋ณ€์ˆ˜, ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์œผ๋ฉด ์ƒ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋ถˆ๋ณ€๊ฐ’๊ณผ ์ƒ์ˆ˜๋ฅผ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ์˜คํ•ดํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ ์ง“๋Š” "

greenteafrog.tistory.com

 

๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋ฐ์ดํ„ฐ ํ• ๋‹น

๋ณ€์ˆ˜ ์„ ์–ธ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋œปํ•˜๋Š” ๋ฐ”๋Š” "๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉฐ ์ด๋ฆ„(์‹๋ณ„์ž)์€ num์œผ๋กœ ํ•œ๋‹ค"๋Š” ๋œป์ž…๋‹ˆ๋‹ค. var num; ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”

greenteafrog.tistory.com

๋ณ€์ˆ˜ ๋ณต์‚ฌ ๋น„๊ต

var num = 7;
var cloneNum = num

var obj = {
    num1: 7,
    num2: 'one'
};
var cloneObj = obj;

 

์œ„์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์€ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฐ™์€ ์ฃผ์†Œ(๊ฐ’)์„ ๋ฐ”๋ผ๋ณด๊ฒŒ๋˜๋Š”

์ ์—์„œ๋Š”

๋™์ผํ•˜๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.

๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์ธ num, cloneNum์ด ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ’์ด @3000๋ฒˆ ์ฃผ์†Œ๋กœ ๊ฐ™๊ณ ,

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์ธ obj, cloneObj์˜ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ’์ด @3001๋ฒˆ์œผ๋กœ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณต์‚ฌ๊ณผ์ •์€ ๊ฐ™์ง€๋งŒ ๋ฐ์ดํ„ฐ ํ• ๋‹น ๊ณผ์ •์—์„œ ์ด๋ฏธ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์‚ฌ์ดํ›„์˜ ๋™์ž‘์— ํฐ ์ฐจ์ด๊ฐ€

๋ฐœ์ƒ ํ•ฉ๋‹ˆ๋‹ค.

 

var num = 7;
var cloneNum = num

var obj = {
    num1: 7,
    num2: 'one'
};
var cloneObj = obj;

cloneNum = 8;
cloneObj.num1 = 14;

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ cloneNum ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 14๋กœ ๋ฐ”๊พธ๋ฉด ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ๊ฐ€ @3003์œผ๋กœ ๋ฐ”๋€ ๋ฐ˜๋ฉด,

cloneObj์˜ num1 ๊ฐ’์„ 14๋กœ ๋ฐ”๊พธ๋ฉด  cloneObj์˜ ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ๋Š” ์—ญ์‹œ๋‚˜ obj์™€ ๊ฐ™์ด ์—ฌ์ „ํžˆ @3001์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

num !== cloneNum
obj === cloneObj

 

๊ฒฐ๊ตญ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ์ƒํƒœ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„ ๊ธฐ๋ณธํ˜•์€ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๊ณ , ์ฐธ์กฐํ˜•์€ ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค๊ณ  ํ•˜์ง€๋งŒ
์‚ฌ์‹ค์€ ์šฐ๋ฆฌ๊ฐ€ ๋ด์™”๋˜ ๊ฒƒ๊ณผ ๊ฐ™์ด ์–ด๋–ค๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋“  ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ฐธ์กฐํ˜• ์ผ ์ˆ˜ ๋ฐ–์—์—†๋‹ค.

๋‹ค๋งŒ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋ฐ”๋กœ ๋Œ€์ž…ํ•˜๋ฉฐ, ์ฐธ์กฐํ˜•์€ ํ•œ๋ฒˆ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์— ๋‹ด๊ฒจ์žˆ๋Š” ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ๊ฐ’์ด
๋ณ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€

์œ„์—์„œ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์ด ๋ณ€๊ฒฝ์€ ๊ธฐ๋ณธํ˜•์ฒ˜๋Ÿผ ๊ฐ’ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ,

๋‚ด๋ถ€ ํ”„๋Ÿฌํผํ‹ฐ ( cloneObj.num1 )๋ฅผ๋ณ€๊ฒฝ ์‹œ์ผฐ๋‹ค, ๊ฐ™์€ ์กฐ๊ฑด์ธ ๊ฐ’์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณด์ž.

var obj = {
    num1: 7,
    num2: 'one'
};
var cloneObj = obj;

cloneObj = {
    num1: 14,
    num2: 'one'
};

์œ„์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•จ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๊ณ  ๊ฐ’์ด ๋‹ฌ๋ผ์ง„๋‹ค.!

 

ํ•ต์‹ฌ!
์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ '๊ฐ€๋ณ€๊ฐ’'์ด๋ผ๊ณ  ํ• ๋•Œ '๊ฐ€๋ณ€'์€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ
๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ• ๋•Œ๋งŒ ์„ฑ๋ฆฝํ•œ๋‹ค!!
728x90