๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ๋ณต์ฌ ๋น๊ต( ๊ธฐ๋ณธํ๋ฐ์ดํฐ, ์ฐธ์กฐํ ๋ฐ์ดํฐ)
์๋ ๊ฒ์๋ฌผ์ ๋ค ์ดํดํ๋ค๋ ๊ฐ์ ์์ ์ฐ๋ ๊ธ์ ๋๋ค.!!
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์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ด์ฉํด์ ๊น์ ๋ณต์ฌ๋ฅผ ํ ์ ์๋ ๋ฐฉ๋ฒ๋ฑ์ด ์์ต๋๋ค.
์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ์ ๋ํ ์์ธํ ์ฌํญ์ ๋ค๋ฅธ ํฌ์คํ ์์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค!>
'๐โ๐จFRONT-END > ๐งฉ JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
for์ foreach (0) | 2023.12.13 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์ง์ฌ๊ฐํ ๋ณ์ฐ๊ธฐ(์๋ฐ์คํฌ๋ฆฝํธ) (0) | 2023.03.02 |
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ๋ณต์ฌ ๋น๊ต( ๊ธฐ๋ณธํ๋ฐ์ดํฐ, ์ฐธ์กฐํ ๋ฐ์ดํฐ) (0) | 2023.02.13 |
๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ ์ฐธ์กฐํ ๋ฐ์ดํฐ(๋ถ๋ณ์ฑ, ๊ฐ๋ณ์ฑ) (0) | 2023.02.11 |
this์ ์ฉ๋ฒ (1) | 2022.10.27 |