์ฐธ์กฐํ ๋ฐ์ดํฐ
๋จผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ ํ์ ์ค ์ฐธ์กฐํ์ผ๋ก๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
- Object
- Array
- ํจ์(function)
- Date
- ์ ๊ทํํ์
- Map, Set ์๋ฃ ๊ตฌ์กฐ
- + null๋ object ํ์ !
์ฐธ์กฐํ ํ์ ๋ค์ ์๋์ ๊ฐ์ ํํ๋ก ๊ฐ์ ์ฐธ์กฐํ๊ณ ์๋ค.
์ค์ ๊ฐ์ฒด ๋ด ํ๋กํผํฐ๋ค์ด ๋ด๊ธด ์ฃผ์ ๊ฐ๋ค์ ๋ฐ์ดํฐ๋ก ๊ฐ๊ณ ์๋ ์ฃผ์ ๊ฐ!.. ์ ๋ณต์ฌํด์ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐํ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
1. obj1์ ์ํ ๋ณ๋์ ๋ฐ์ดํฐ ์์ญ ์์ ํ๋กํผํฐ๋ค์ ๋ ๊ทธ ์์์ ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ ์๋ค. (์์ ์ฃผ์ 7103~7104 ๋ถ๋ถ)
2. ๋ฐ์ดํฐ ์์ญ ์์ ํ๋กํผํฐ๋ค์ ์ฃผ์ ๊ฐ์ด ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ฐ๋๋ค.
3. obj1์ 2์ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๋ค.
๊ฒฐ๊ตญ ๊ธฐ๋ณธํ๊ณผ์ ์ฐจ์ด๋ ๊ธฐ๋ณธํ์ ๊ฐ์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ์ ๋ฐ๋ก ๋ณต์ ํ๋ ๋ฐ๋ฉด,
์ฐธ์กฐํ์ ์ฃผ์ ๊ฐ์ด ๋ด๊ธด ์ฃผ์ ๊ฐ์ ๋ณต์ ํ๋ค๋ ๊ฒ!..
์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ
์์ ๋ณต์ฌ
์ฐธ์กฐํ ๋ฐ์ดํฐ๋ ์ฃผ์ ๊ฐ์ ๋ฐ๋ผ ์ผ๋ง๋ ์ง ๊ฐ์ด ๋ฐ๋ ์ ์๋ค.
const obj1 = {
a: 123,
b: 'abc',
};
const obj2 = obj1; // obj1์ ์ฃผ์๊ฐ์ ์ฐธ์กฐ
obj2.a = 456;
์์ ๊ฐ์ ์์๋ฅผ ๋ค์์ ๋ obj1๋ ๊ฐ์ด ๋๊ฐ์ด ๋ฐ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ์ผ obj2๋ obj1์ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๋ ๋ ๊ฐ์ฒด๋ ๊ฐ๋ค!...
๊ฒฐ๊ตญ obj2์ ํ๋กํผํฐ ๊ฐ์ ๋ฐ๊พธ์์ง๋ง obj1๊น์ง ์ํฅ์ด ๊ฐ๋ค. ์๋์น ์๊ฒ ๊ธฐ์กด ๋ณ์๊น์ง ์์ ์ด ๋์ด๋ฒ๋ฆฐ ๊ฒ.. ๐
์ด๋ ๊ฒ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ ์์ ๋ณต์ฌ๋ผ๊ณ ํ๋ค.
๊น์ ๋ณต์ฌ
๊น์ ๋ณต์ฌ๋ ์์ ๊ฐ์ด ์ฃผ์ ๊ฐ๋ง ๋ณต์ ๋๋ ๊ฒ์ด ์๋๋ผ, ๋ด๋ถ ๊ฐ์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค.
๊ณ ๋ก ์๋ณธ ๊ฐ์ฒด์์ ์ฐธ์กฐ๊ฐ ๋ชจ๋ ๋์ด์ง ์ํ์ธ ๋ถ๋ณ ๊ฐ์ฒด๊ฐ ๋๋ค.
๋ด๋ถ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ด๋.. ์๋ก์ด ๊ฐ์ฒด ๋ง๋๋ ํจ์ ๋ง๋ค์ด์ ๋ณต์ฌํ๋ฉด ๋์ง ์๋? ๐ค ์ถ์ ์๋ ์๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ๋ ํ๋กํผํฐ๊ฐ ๋ฌด์ํ ๋ง์ ๊ฒฝ์ฐ์๋ ๋ต์ด ์๋ค๋ ์ ๊ณผ..
์๋์ฒ๋ผ ์ค์ฒฉ ๊ฐ์ฒด์ธ ๊ฒฝ์ฐ ํ๋กํผํฐ b์ c ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ ๋ณต์ฌ๊ฐ ๋๋ค๋ ์ !...
const obj = {
a: 123,
b: [1, 2, 3],
c: {
name: 'troy',
age: '20',
},
};
const copyObject = (target) => {
const result = {};
for (const prop in target) {
result[prop] = target[prop];
}
return result;
};
const obj2 = copyObject(obj);
obj2['d'] = 'def';
์, ์ธ๋ป ๋ณด๊ธฐ์ obj์ obj2๋ ๋ค๋ฅธ ๊ฐ์ฒด์ธ ๊ฒ ๊ฐ์ง๋ง ๊ฒฐ๊ตญ obj.b์ obj2.b๋ ๋์ผํ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ค.
๊ทธ๋ผ ๊น์ ๋ณต์ฌ๋ ์ด๋ป๊ฒ ํด์ผ ์ข์๊น?? ๊น์ ๋ณต์ฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
JSON.parse()
์ JSON.stringify()
๋ฅผ ์ด์ฉํ๊ธฐ
JSON ๋ฐ์ดํฐ๋ก ๋ณํํ๋ค๊ฐ ๋ค์ object๋ก ๋ณํํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ์ด ๊ณผ์ ์์์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๋ค.
๊ฐ์ฅ ๊ฐ๋จํ๋ค๊ณ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋นํด ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ..
const obj = {
a: 1,
b: {
c: null,
d: [1, 2],
},
};
const obj2 = JSON.parse(JSON.stringify(obj));
obj2['c'] = 3;
์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋ ๊ฐ๋ ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋ณผ ์ ์๋ค.
์ฌ๊ท ํจ์๋ก ๊ตฌํํ๊ธฐ
์ข ๋ ๋ณต์กํ์ง๋ง ์ฌ๊ทํจ์๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
const copyObjectDeep = function (target) {
let result = {};
if (typeof target === 'object' && target !== null) {
for (const prop in target) {
result[prop] = copyObjectDeep(target[prop]);
}
} else {
result = target;
}
return result;
};
const obj = {
a: 1,
b: {
c: null,
d: [1, 2],
},
};
const obj2 = copyObjectDeep(obj);
obj2['c'] = 345;
์ญ์ ์์ ๋์ผํ ๊ฒฐ๊ณผ!..
Object.assign() ๋ฉ์๋์ Spread ์ฐ์ฐ์๋ 1 depth ๊น์ง๋ ๊น์ ๋ณต์ฌ๊ฐ ๋๋ค๊ณ ํ๋ค. ๐
'๐ Studying > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ๋ ๋ณํฉ์ฐ์ฐ์ '??'์ ์ต์ ๋ ์ฒด์ด๋ '?.' (1) | 2022.12.01 |
---|---|
[Javascript] ์คํ ์ปจํ ์คํธ (0) | 2022.11.30 |
[JavaScript] ์ถ์ฒ ๊ฒ์์ด ๋์ฐ๊ธฐ (0) | 2022.08.11 |
[JavaScript] ํด๋ก์ ์ด์ง ์์๋ณด๊ธฐ (0) | 2022.08.11 |
[JavaScript] Obejct.entries ๋ฅผ ์ด์ฉํด ๊ฐ์ฒด ๊ฐ๊ณตํ๊ธฐ (0) | 2022.07.28 |
Comment