์ฐธ์กฐ์ ์ํ ๊ฐ์ฒด๋ณต์ฌ
- ๊ฐ์ฒด์ ์์ํ์ ์ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด ์ค ํ๋๋ ๊ฐ์ฒด๋ '์ฐธ์กฐ์ ์ํด(by reference)' ์ ์ฅ๋๊ณ ๋ณต์ฌ๋๋ค.
- ์์๊ฐ(๋ฌธ์์ด, ์ซ์, ๋ถ๋ฆฐ ๊ฐ)์ '๊ฐ ๊ทธ๋๋ก' ์ ์ฅยทํ ๋น๋๊ณ ๋ณต์ฌ๋๋ค.
let message = 'Hello';
let cloneMessage = message;
cloneMessage = 'CloneHello';
console.log(message, cloneMessage); // Hello CloneHello
๊ฐ์ฒด๊ฐ ํ ๋น๋ ๋ณ์๋ฅผ ๋ณต์ฌํ๋ฉด ๋์ผํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ ๊ฐ์ด ํ๋ ๋ ๋ง๋ค์ด์ง๋ค.
let user = { name: 'John'; }
let admin = user;
admin.name = 'Pete';
console.log(user, admin); // {name: 'Pete'} {name: 'Pete'}
๊ฐ์ฒด๋ฅผ ์๋์ฅ์ ๋น์ ํ์๋ฉด ๋ณ์๋ ์๋์ฅ์ ์ด ์ ์๋ ์ด์ ๋ผ๊ณ ํ ์ ์๋ค. ์๋์ฅ์ ํ๋({name: 'John'}
), ์ด์ ๋ ๋ ๊ฐ(user
, admin
), ์ค admin
์ ์ฌ์ฉํด ์๋์ฅ์ ์ด์ด ์ ๋ ํ(admin.name = 'Pete'
), ๋ ๋ค๋ฅธ ์ด์ ๋ก ์๋์ฅ์ ์ด๋ฉด ์ ๋๋ ์ด์ ๋ฅผ ๋ณผ ์ ์๋ค.
์ฐธ์กฐ์ ์ํ ๋น๊ต
let a = {};
let b = a; // ์ฐธ์กฐ์ ์ํ ๋ณต์ฌ.
console.log(a == b); // true, ๋ ๋ณ์๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ.
console.log(a === b); // true
์๋ ์์๋ฅผ ๋ณด๋ฉด ๋ ๊ฐ์ฒด ๋ชจ๋ ๋น์ด์๋ค๋ ์ ์์ ๊ฐ์ ๋ณด์ด๋, ๋ ๋ฆฝ๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ผ์นยท๋๋ฑ ๋น๊ตํ๋ฉด ๊ฑฐ์ง์ด ๋ฐํ๋๋ค.
let a = {};
let b = {}; // ๋
๋ฆฝ๋ ๋ ๊ฐ์ฒด.
console.log(a === b); // false
์ค์ฒฉ๊ฐ์ฒด๋ณต์ฌ
let user = {
name: 'John',
sizes: {
height: 182,
width: 50
}
};
console.log(user.sizes.height); // 182
clone.sizes = user.sizes
๋ก ํ๋กํผํฐ๋ฅผ ๋ณต์ฌํด๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ์๋ ์๋ค. user.sizes
๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ๊ฐ์ด ๋ณต์ฌ๋๊ธฐ ๋๋ฌธ.
Reference
'๐ฉ๐ปโ๐ปSTUDY > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋น๊ตฌ์กฐํ(๊ตฌ์กฐ๋ถํด) ํ ๋น (0) | 2023.01.30 |
---|---|
[JavaScript] e.target , e.currentTarget (0) | 2022.08.15 |
[JavaScript] ๊ฐ์ฒด (0) | 2022.01.24 |
[JavaScript] nullish ๋ณํฉ ์ฐ์ฐ์ ?? (0) | 2022.01.24 |
[JavaScript] return์ด ํ๋ ์ผ (0) | 2021.11.26 |