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

๋ถˆ๋ณ€ ๊ฐ์ฒด

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

๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

 

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

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

greenteafrog.tistory.com

์œ„ ํฌ์ŠคํŒ…์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์˜ '๊ฐ€๋ณ€'์€ ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งŒ

์„ฑ๋ฆฝํ•œ๋‹ค๊ณ ํ–ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ž์ฒด ( ์ƒˆ๋กœ์€ ๋ฐ์ดํ„ฐ(๊ฐ์ฒด)๋ฅผ ํ• ๋‹น ํ•˜๋ฉด )๋ฅผ ๋ณ€๊ฒฝ ํ•˜๋ฉด ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์กด๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

( ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ฃผ์†Œ๋ฅผ ์ €์žฅ ํ•  ๋ฟ์ด๋‹ค )

 

์ด๋•Œ ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ• ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๊ธฐ๋กœ ์•ฝ์†ํ•œ๋‹ค๋ฉด ๊ฐ์ฒด์—ญ์‹œ ๋ถˆ๋ณ€์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ์ฒด ๊ฐ€๋ณ€์„ฑ์˜ ๋ฌธ์ œ์ 

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

var user = {
    name: 'eastzoo',
    age: 25
};

var newUser = user;
newUser.name = 'human';

if (user !== newUser) {
    console.log("์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค");
}

console.log(user.name, newUser.name); // human human
console.log(user === newUser);		  // true

์œ„์™€ ๊ฐ™์ด newUser์— user ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋‚œ ๋’ค newUser.name ์„ ํ†ตํ•ด newUser์— 'human'์„ ํ• ๋‹นํ•˜์˜€๋‹ค.

์—ญ์‹œ๋‚˜ if ๋ฌธ์—์„œ๋Š” user์™€ newUser๊ฐ€ ๊ฐ™๋‹ค๊ณ  ๋ณด์•„์„œ if ๋ฌธ์€ ์‹คํ–‰๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ,

 

์šฐ๋ฆฌ๋Š” newUser์˜ name๋งŒ ๋ฐ”๊ฟจ์„ ๋ฟ์ธ๋ฐ 13๋ฒˆ์งธ ์ค„( console.log(user.name, newUser.name) )์—์„œ ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ’์€

๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ (human human) ์ด ๋‚˜์˜ค๊ฒŒ  ๋˜๋ฉฐ, 14๋ฒˆ์งธ์ค„ ์—ญ์‹œ true๋กœ ๋™์ผํ•˜๋‹ค๊ณ  ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

์œ„์™€๊ฐ™์€ ๋ฌธ์ œ๋Š” ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋œ ์‹œ์ ์—์„œ ์•Œ๋ฆผ์„ ์ฃผ๊ฑฐ๋‚˜, ui์— ํ‘œ์‹œํ•˜๋Š”๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ• ๋•Œ

๋ณ€๊ฒฝ ์ „๊ณผ ํ›„์— ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

var user = {
    name: 'eastzoo',
    age: 25
};

var newUser = user;
newUser = {
	...user,
    name: 'human',
}


if (user !== newUser) {
    console.log("์œ ์ € ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค");	//์œ ์ € ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
}
console.log(user.name, newUser.name);			//eastzoo human
console.log(user === newUser);					//false

์œ„์˜ ์ฝ”๋“œ๋Š” ํ”„๋กœํผํ‹ฐ์˜ ์ˆ˜์ •์ด์•„๋‹Œ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž( ... )๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋„๋ก ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ 

 

[React] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• ์ •๋ฆฌ#2

์Šคํ”„๋ ˆ๋“œ ๋ ˆ์ŠคํŠธ ์—ฐ์‚ฐ์ž ( Spread & Rest Operators ) ( ... ) ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž(Spread) Spread( ํŽผ์น˜๋‹ค, ํผ๋œจ๋ฆฌ๋‹ค )๋ผ๋Š” ๋‹จ์–ด๋‹ต๊ฒŒ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํŽผ์ณ ๋†“์Šต๋‹ˆ๋‹ค ์˜ˆ๋ฅผ ๋“ค์–ด oldArray๊ฐ€ ์žˆ๋Š”๋ฐ ์ด oldArray๋ฐฐ์—ด์—

greenteafrog.tistory.com

 

ํ•˜์ง€๋งŒ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋กœ๋Š” 1deps ๊นŠ์ด ๋งŒํผ๋งŒ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด newUser๋ณ€์ˆ˜์— ๋ณต์‚ฌ๋œ ๊ฐ์ฒด์˜ nested๋œ ( language:{ } ) ์— ๋‹ด๊ธด first ์ •๋ณด๋ฅผ 'japan'์œผ๋กœ ๋ฐ”๊พธ๋ฉด
์ถœ๋ ฅ๋ถ€์—์„œ ๋ณผ ์ˆ˜์žˆ๋“ฏ์ด user, newUser๊ฐ์ฒด์˜ language.first์˜ ์ •๋ณด๊ฐ€ ๊ฐ™์ด ๋ฐ”๋€๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š”

json์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ lodash์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ด์šฉํ•ด์„œ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!>

728x90