- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ์ดํฐ ํ์ ์๋ ์๋์ ๊ฐ์ด ์์ํ๊ณผ ์ฐธ์กฐํ์ผ๋ก ๋๋ฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ์คํ ๋ฉ๋ชจ๋ฆฌ(์ ์ ํ ๋น, ๋ณ์, ์์ํ ๋ฐ์ดํฐ ์ ์ฅ)์ ํ ๋ฉ๋ชจ๋ฆฌ(๋์ ํ ๋น, ์ฐธ์กฐํ ๋ฐ์ดํฐ, ์ ์ฅ) ์์ญ์ผ๋ก ๋๋์ด ์์ต๋๋ค.
์์ํ(Primitive Type)
๊ฐ์ฒด๋ฅผ ์ ์ธํ ๋ชจ๋ ํ์ ์ ์์ ๊ฐ(๋ถ๋ณ ๊ฐ)์ผ๋ก ๊ฐ์ ๊ทธ๋๋ก ํ ๋นํฉ๋๋ค.
- boolen
- null
- undefined
- number
- string
- symbol (ES6)
์๋์ ๊ฐ์ด newName์ name์ ํ ๋นํ๊ณ ๋ค์ "jennie"๋ก ๊ฐ์ ์ฌํ ๋น ํ ํ name๊ณผ newName์ ํ์ธํด ๋ณด๋ฉด ๋ฐ์ดํฐ์ ๋ถ๋ณ์ฑ(newName์ ๊ฐ์ ์ฌํ ๋น ํด๋ name์ ๊ฐ์ด ๋ณํ์ง ์์)์ ํ์ธํ ์ ์์ต๋๋ค.
let name = "sara";
let newName = name;
newName = "jennie";
console.log(name, newName); // sara, jennie
์ด๋ ๊ฒ ๊ฐ์ด ๋ณํ์ง ์๋ ๊ฒ ์ด ๋น์ฐํด ๋ณด์ด์ง๋ง ๊ทธ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
1. ๋ฉ๋ชจ๋ฆฌ(1002)์ ์๋ณ์ name์ ์ ์ฅํฉ๋๋ค.
... | 1002 | ... |
์ด๋ฆ: name ๊ฐ: |
2. "sara"๋ฅผ ๋น์ด์๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ(5003) ๊ณต๊ฐ์ ์ ์ฅํฉ๋๋ค.
... | 1002 | ... |
์ด๋ฆ: name ๊ฐ: |
... | 5003 | .. |
"sara" |
3. name๊ณผ newName ์ ๊ฐ์ string ํ์ ์ "sara"๋ฅผ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ(5003) ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค.
... | 1002 | 1003 |
์ด๋ฆ: name ๊ฐ: @5003 |
์ด๋ฆ: newName ๊ฐ: @5003 |
... | 5003 | .. |
"sara" |
4. newName์ "jennie"๋ฅผ ์ฌํ ๋น ํ๋ฉด string ํ์ ์ "jennie"๋ฅผ ๋ฉ๋ชจ๋ฆฌ(5004)์ ์ ์ฅํ๊ณ newName์ ํด๋น ์ฃผ์(5004)๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
... | 1002 | 1003 |
์ด๋ฆ: name ๊ฐ: @5003 |
์ด๋ฆ: newName ๊ฐ: @5004 |
... | 5003 | 5004 |
"sara" | "jennie" |
์ด์ ๊ฐ์ด ์์ํ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ฅผ ์ง์ ๋ฐ๊ฟ๋๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋ถ๋ณ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ฐธ์กฐํ(Reference Type)
๊ฐ์ฒด ํ์ ์ ๋ฐ์ดํฐ๋ก ๊ฐ์ด ์ ์ฅ๋ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํฉ๋๋ค.
- Object
- Array
- Function
- RegExp(์ ๊ท ํํ์)
- Set (ES6)
- Map (ES6)
๊ฐ์ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๋ค๋ ๊ฒ์ ์์ ๋ณต์ฌ(shallow copy)๋ฅผ ํ์ธํ๋ฉด ์ดํดํ ์ ์์ต๋๋ค.
์๋์ ๊ฐ์ด obj2.b ๊ฐ์ ์ฌํ ๋นํ์ ๋ obj.b์ ๊ฐ๋ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ๋ฅผ ์์ ๋ณต์ฌ๋ผ๊ณ ํฉ๋๋ค.
const obj = {
a: 1,
b: 2,
};
const obj2 = obj;
obj2.b = 3;
console.log(obj, obj2); // {a: 1, b: 3}, {a: 1, b: 3}
์ด๋ ๊ฒ obj์ ๊ฐ์ด ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
1. obj๋ฅผ ๋ฉ๋ชจ๋ฆฌ(1002)์ ์ ์ธํฉ๋๋ค.
... | 1002 | 1003 |
์ด๋ฆ: obj ๊ฐ: @5002 |
์ด๋ฆ: obj2 ๊ฐ: @1002 |
2. ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ณต๊ฐ ํ๋์๋ ๊ฐ์ด ํ๋์ฉ๋ฐ์ ๋ชป ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ(7103 ~) ๊ณต๊ฐ์ ํ๋ณดํฉ๋๋ค.
5002 | 5003 | 5004 | 5005 |
@7103~ | 1 | 2 | 3 |
ํ๋ณดํ ๊ณต๊ฐ ๋ฉ๋ชจ๋ฆฌ(7103 ~)์ ํ๋กํผํฐ(5003, 5004)๋ฅผ ํ๋์ฉ ํ ๋นํฉ๋๋ค.
7103 | 7104 | ... |
์ด๋ฆ: a ๊ฐ: @5003 |
์ด๋ฆ: b ๊ฐ: @5004 -> @5005(3์ผ๋ก ์ฌํ ๋น) |
3. obj2์ obj๋ฅผ ํ ๋นํ์ผ๋ฏ๋ก obj๋ 1002๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
4. obj2.b ์ 3์ผ๋ก ์ฌํ ๋น(5005) ํ๋ ๊ฒฝ์ฐ obj์ obj2๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(5002) ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํฉ๋๋ค.
์ด์ ๊ฐ์ด ์์ ๋ณต์ฌ๋ obj2๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ ๊ฒ์ด ์๋๋ผ obj์ ๊ฐ์ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๋ฏ๋ก obj2.b๋ฅผ ๋ณ๊ฒฝํ์ง๋ง obj๋ ๊ฐ์ด ๋ณํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐธ๊ณ - ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ
'Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Class ํด๋์ค (0) | 2022.12.23 |
---|---|
๊ฐ์ฒด ์งํฅ Prototype (0) | 2022.12.04 |
Javascript This (0) | 2022.11.21 |
์คํ ์ปจํ ์คํธ (0) | 2022.11.13 |