TIL - 21.07.03๐จโ๐ป - Js
TIL - 21.07.03 ๐จโ๐ป
๊ฐ๋น์ง ์ปฌ๋ ์
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋กฏํ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ป ํ๋ค.
let user = { name: 'sunghoon', job: 'dev', } // { name: 'sunghoon', job: 'dev' } ์ธ ๊ฐ์ฒด๊ฐ // user๋ผ๋ ๋ณ์์ ํ ๋น๋์ด์ user๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋จ. user = null; // user์ null์ด ํ ๋น๋๋ฉด์ { name: 'sunghoon', job: 'dev' } ๋ผ๋ ๊ฐ์ฒด๋ ๋๋ฌ ๋ถ๊ฐ๋ฅํ๊ฒ ๋์๊ณ //ํด๋น ๊ฐ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํด ์ญ์ ๋จ.
๊ธฐ์ค
๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์๋ํ๋ ๊ธฐ์ค์ ๋๋ฌ ๊ฐ๋ฅ์ฑ(reachability)์ด๋ฉฐ ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ด๋ ์ด๋ป๊ฒ๋ ์ ๊ทผ๊ฐ๋ฅํ๊ฑฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ ๋ป ํ๋ค.
์ ์ญ ๋ณ์์ ๊ฐ์ด ์ด๋์๋ ์ง ๋๋ฌ๊ฐ๋ฅํ๊ธฐ์ ํน๋ณํ ์ด์ ๊ฐ ์๋ค๋ฉด ์ญ์ ๋ถ๊ฐ๋ฅํ ๊ฒ๋ค์ ํน๋ณํ ์ด์ ๊ฐ ์์ผ๋ฉด ์ญ์ ๋์ง ์๋๋ค.
์ญ์ ์๊ณ ๋ฆฌ์ฆ
์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์์ง๋ง ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ mark and sweep ๋ฐฉ์์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
mark and sweep ๋ฐฉ์์ ์ ์ญ ๋ณ์์ ๊ฐ์ ๋ฃจํธ์ ๋ณด์ ํ์(mark)๋ฅผ ๋จ๊ธฐ๊ณ , ๊ทธ ๋ค์์ผ๋ก ๋ฃจํธ๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊น์ง ๋ฐฉ๋ฌธํด ์ ๋ถ ํ์์ ๋จ๊ธด๋ค.
๋ฃจํธ์์ ๋๋ฌํ ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด์ ๋ฐฉ๋ฌธํ ๋๊น์ง ํด๋น ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค๊ฐ ๋ ์ด์ ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ฒด๊ฐ ์์๋ ํ์์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ค.
new ์ฐ์ฐ์์ ์์ฑ์ ํจ์
new ์ฐ์ฐ์์ ์์ฑ์ ํจ์๋ ์ ์ฌํ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
์์ฑ์ ํจ์์ ๊ฒฝ์ฐ ์ผ๋ฐ ํจ์์ ๊ธฐ์ ์ ์ฐจ์ด๋ ์์ผ๋ ์์ฑ์ ํจ์์ ๊ฒฝ์ฐ ๋ ๊ด๋ก๋ฅผ ๋ฐ๋ฅธ๋ค.
- ํจ์ ์ด๋ฆ์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ฑํ๋ค.
- ์ด๋ฆ ์์ 'new' ์ฐ์ฐ์๋ฅผ ๊ผญ ๋ถํ๋ค.
function AddUser(name, job){
this.name = name;
this.job = job;
}
const user1 = new AddUser('sunghoon', 'dev');
console.log(user1) // { name: 'sunghoon', job: 'dev' }
new ์ฐ์ฐ์์ ์์ฑ์ ํจ์๋ฅผ ์ด์ฉํ ๋ ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ํ๋ค.
- ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํด ํจ์ ๋ด this์ ํ ๋นํ๋ค.
- ํจ์์ ๋ณธ๋ฌธ์ ์คํํ์ฌ this์ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ค.
- ๊ฐ์ฒด this๋ฅผ ๋ฐํํ๋ค.
return ์ฌ์ฉ์
์์ฑ์ ํจ์๋ ๊ฐ์ฒด this์ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐ ํ ์๋์ผ๋ก ๊ฐ์ฒด this๋ฅผ ๋ฐํํ๊ธฐ์ return์ด ํ์์๋ค.
ํ์ ์์ง๋ง ๋ง์ฝ ์์ฑ์ ํจ์ ๋ด return๋ฌธ์ด ์์ฑ๋๋ค๋ฉด, ๋ฐํ๋๋ ๊ฒ์ด ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ , ๋ง์ฝ ์์ ์๋ฃํ์ด ๋ฐํ๋๋ค๋ฉด return๋ฌธ์ ๋ฌด์ํ๋ค.
GOOD ๐
๊ณต๋ถ๋์ด ๋ง์ง๋ ์์ง๋ง ๊ทธ๋๋ ์์นจ์ ์ผ์ด๋ฌ์ ๋๋ณด๋ค ์ง์์ด ๋์๋ค.
BAD ๐ฅ
๋๋ฌด ๋์์ ๊ณต๋ถ๋ ์์ฒด๊ฐ ์ ๋คใ
TO DO ๐ฅ
- DOM ๊ตฌ์กฐ
- ์ด๋ฒคํธ
- ๊ณ ์ฐจํจ์
- react
- node.js
Retrospect ๐ง
์ด์ ๋ฐค์ ์๋ฉด์ ๋๋ผ๋ง๋ฅผ ๋ช๋ฒ ๋ณด๊ณ ์ค๋๋ ์ค๋ ๋ฆ์ ๋ ์๋ฒ๋ ธ๊ณ , ์ผ์ด๋์๋ ์นจ๋์ ๋น๋ฅ๊ฑฐ๋ฆฌ๋ค๊ฐ ๋ทํ๋ฆญ์ค๋ฅผ ์ผ๋ฒ๋ ธ๋ค.
์๊ธฐ๋ฐ์ฑ์ ์๊ฐ์ด ํ์ํ ์์ ์ธ ๋ฏ ํ๋ค.
Reference ๐
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ - https://ko.javascript.info/
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TIL - 21.07.03๐จโ๐ป - Js), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@planethoon/TIL-21.07.03์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค