๐ JavaScript
[JS Tam9์ํ] #4 Primitive VS Object (Reference)
Tamii
2021. 7. 18. 04:20
๋ฐ์ํ
๐11- ์์ ๊ฐ๊ณผ ๊ฐ์ฒด
Primitive | Object(reference) |
---|---|
์์ ํ์ | ๊ฐ์ฒด(์ฐธ์กฐ)ํ์ |
๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํจ | ๋ณ๊ฒฝ ๊ฐ๋ฅํจ |
๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๊ฐ ์ ์ฅ | ๋ฉ๋ชจ๋ฆฌ์ ์ฐธ์กฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ ์ฅ |
Primitive ์์๊ฐ
์์๊ฐ์ ๋ฐ์ดํฐ ๋ถ๋ณ์ฑ์ผ๋ก ๋ณด์กดํ๊ธฐ ์ํด ์ด๋ค ์ผ์ด ์ผ์ด๋๋ ๋ถ๋ณํ๊ณ , ์ด๋ก ์ธํด ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ์ผ๋ก ๋ณด์ฅํ๋ค.
๋ณ์์ ๊ฐ์ ์๋ณ์๋ ๊ฐ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ค.
var a= 10
b =a
๋ ๋ณ์์ ์์ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋ ๋ณ๊ฐ์ ๊ฐ
์๋ก ๊ฐ์ญํ์ง ์๋๋ค.
Object ๊ฐ์ฒด
Java, C++ (ํด๋์ค ๊ธฐ๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด)
์ฌ์ ์ ์ ์๋ class ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด ์์ฑ
์ ํด์ง ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉ
JavaScript
ํด๋์ค ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ์ผ๋ก ํ๋กํผํฐ์ ๋ฉ์๋ ์ถ๊ฐ๊ฐ ๊ฐ๋ฅํจ
๊ฐ์ฒด์ ํน์ง
- ๊ฐ์ฒด์ ๊ฐ์ ํ ๋นํ๋ฉด ๋ณ์๋ ๊ฐ์ด ์๋๋ผ ๊ฐ์ ์ ๊ทผํ ์ ์๋ ์ฐธ์กฐ๊ฐ(reference value)์ ๊ฐ๋ฆฌํจ๋ค
- ์์๊ฐ์ ๊ฐ๋ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ์ฌํ ๋น ๋ฐ์ ๋ฐฉ๋ฒ์ด์์ง๋ง,
๊ฐ์ฒด๋ฅผ ํ ๋นํ ๋ณ์๋ ์ฌํ ๋น ์์ด ์์ ๋กญ๊ฒ ํ๋กํผํฐ์ ์ถ๊ฐ, ๊ฐฑ์ , ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค - ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ ํ ์ ์๋ค.
- ์ฌ๋ฌ๊ฐ์ ์๋ณ์๊ฐ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ ์ ์๋ค.
๊น์ ๋ณต์ฌ์ ์์ ๋ณต์ฌ
๊น์ ๋ณต์ฌ (์์๊ฐ ๋ณต์ฌ)
const a = 1
const b = a
- ์์ ํ ๋ณต์ฌ๋ณธ์ ๋ง๋ ๋ค
- ์๋กญ๊ฒ ๋ง๋ค์ด ์ฌํ ๋น์ ํตํด ๊ต์ฒด
- ์ค์ฒฉ๋์ด ์๋ ๊ฐ์ฒด๊น์ง ๋ชจ๋ ๋ณต์ฌ
์์ ๋ณต์ฌ (๊ฐ์ฒด ๋ณต์ฌ)
const a = {name:'Tami'}
const b = a
- ๊ฐ์ฒด์ ์ค์ฒฉ๋์ด ์๋ ๊ฐ์ฒด๋
์ฐธ์กฐ๊ฐ
์ ๋ณต์ฌ๋๊ฐ์ ์๋ณ์๊ฐ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค๋ ๊ฒ?์ฌ๋ณธ์ด ์๋ณธ์ copy ํ๊ฒ ๋๋ฉด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ค๋ฅด์ง๋ง ๋์ผํ ์ฐธ์กฐ๊ฐ(reference)์ ๊ฐ์ง๊ฒ ๋๋ค.
์๋ณธ๊ณผ ์ฌ๋ณธ ๋ชจ๋ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋จ