๐ Prototype
๐ญ ์์

- bmw / benz / audi._._proto__ = car; ๋ฅผ ํตํด์ ์์์ ๊ตฌํ

- ํด๋น ๊ฐ์ฒด(bmw)์์ ์์ฑ(wheels)์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด proto์์ ์ฐพ๋๋ค.
๐ต Prototype Chain
-
car๋ฅผ ์์ ๋ฐ์ bmw์๊ฒ ์์ ๋ฐ๊ธฐ

-
์ถ๋ ฅ

-
๊ด๊ณ๋

-
์์์ x5๊ฐ navigation์ ์ฐพ๋๋ค๋ฉด ํ๋ฒ์ proto๊ฐ์ฒด๋ง ์ฌ๋ผ๊ฐ๊ณ , drive()๋ฅผ ์ด์ฉํ๋ ค๊ณ ํ๋ค๋ฉด proto๋ฅผ 2๋ฒ ์ฌ๋ผ๊ฐ๋ค.
-
for in ๋ฌธ์ ๋๋ ค๋ณธ๋ค๋ฉด proto ๊ฐ์ฒด๊น์ง ๋ค ๋์จ๋ค

-
keys์ values์ ๊ฐ์ ๊ฐ์ฒด๋ด์ฅ๋ฉ์๋๋ ์์๋ ํ๋กํผํฐ๋ ์๋์จ๋ค.

-
hasOwnPropery๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ property๋ง true๋ฅผ ํด์ค๋ค.

-
์์ฑ์ ํจ์ ์์๋ฐ๊ธฐ


- ์ด๊ฑด ๋งค๋ฒ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ท์ฐฎ๋ค

- ์์ ๋ฐฉ๋ฒ์ ์์ฑ์ํจ์๊ฐ ์์ฑํ๋ ๊ฐ์ฒด์ --proto--๋ฅผ ์ค์ ํ๋ค๋ ์๋ฏธ์ด๋ค. (์์ฑ์ํจ์์ ํ๋กํ ๊ฐ์ฒด ์ค์ ๋ฐฉ์)


- ์ด๋ ใฑ๋ฐ ํ๋กํ ํ์
์ ์ด์ฉํ๋ฉด ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ผ์์๋ค ์ด๋ ๊ฒ ํ๋ฒ๋ง ์์
ํ๋ฉด ์์ฑ์๋ก ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด์ ์ผ์ผํ ์์
ํด์ค ํ์๊ฐ ์๋ค ์์ฑ์ํจ์๊ฐ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ผ๋์ ๊ทธ ๊ฐ์ฒด๋ ์์ฑ์์ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ฅผ ํ์ธํ ์ ์๋ instance of ์ฐ์ฐ์๊ฐ ์๋ค. instance of๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด์ ์์ฑ์๋ฅผ ๋น๊ตํ ์ ์๋ค.
์ด๋ ํด๋น ๊ฐ์ฒด๊ฐ ๊ทธ ์์ฑ์๋ก๋ถํฐ ์์ฑ๋ ๊ฒ์ธ์ง ํ์ธํ ์ ์๋ค.
์์ฑ์๋ก ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๋ constructor ํ๋กํผํฐ๊ฐ ์กด์ฌํ๋ค

-
z4๋ BMW์ ์ธ์คํด์ค์ด๋ค. ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก BMW๋ฅผ ์ด์ฉํด์ z4๋ฅผ ๋ง๋ค์๋์ง ํ์ธํด๋ณผ ์ ์๋ค.
-
์์ฒ๋ผ ์์ฑ์๋ก ๋ง๋ ๊ฐ์ฒด์ด๊ธฐ์ constructor๋ฅผ ํ์ธํด ๋ณผ ์ ์๋ค.


-
์์ฒ๋ผ ํ๋กํ ํ์
์ ๋ฎ์ด์ฐ๋ฉด constructor ์์ฑ์ด ์ฌ๋ผ์ง๊ธฐ์ ํ๋์ฉ prototype์ ์์ฑ์ ์ถ๊ฐํด์ฃผ๋ ๊ฒ์ด๋ค.

- ์์ฒ๋ผ ์๋์ผ๋ก constructor๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค

- ์ด๋ ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ช
ํํ constructor๋ฅผ ๋ณด์ฅํ์ง ์๊ธฐ์ ๊ฐ๋ฐ์์ ์ํด ์ธ์ ๋ ์ง ์์ ๋ ์ ์๋ค.


- ์์ฒ๋ผ ์์ฑํ๋ฉด ์ฝ๋์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์๋ง ์์ผ๋ฉฐ ์์ ํด์ฃผ์ง๋ ๋ชปํ๋ค.

๐ถ prototype vs --proto--
- ์๋ก๋ฅผ ์ฐธ์กฐํ ์ ์๋ค. Person ํจ์์ prototype์์ฑ์ ํตํด์ Person์ prototype๊ฐ์ฒด์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ
- Person์ prototype ๊ฐ์ฒด์ constructor ์์ฑ์ ํตํด์ Person ํจ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค

- ์ด๋ ๊ฒ๋๋ฉด ๊ฐ์ฒด๋ฅผ ์ฐ์ด๋ด๋ ๊ณต์ฅ์ธ Person์ด๋ผ๋ constructor function์ ๋ง๋ ๊ฒ์ด๋ค.

- Person ์ ์์ฑ์ํจ์๋ฅผ ํตํด์ ๋ง๋ ๊ฐ์ฒด๋ ์์ ๊ฐ๋ค.
๊ธฐ์กด์ Personํจ์์์ ์ค์ ํด์ค ์์ฑ๊ฐ๊ณผ ์์ ์ ์์ฑ์ ํจ์์ธ Person์ prototype๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ --proto-- ์์ฑ๊ฐ์ด ์ค์ ๋์ด ์๋ค.
- ์ด๋ฅผํตํด์ ์์ ์ด ๊ฐ์ง๊ณ ์์ง ์์ ์์ฑ์ ์ฐพ์ผ๋ ค๊ณ ํ ๋, --proto-- ์์ฑ์ ํตํด์ prototype ๊ฐ์ฒด์ ํด๋น ์์ฑ์ด ์ ์ ๋์ด์๋์ง๋ฅผ ํ์ธํด๋ณธ๋ค.
- ๋ง์ผ ํด๋น prototype๊ฐ์ฒด์๋ ์์ฑ ๋์ด์์ง ์๋ค๋ฉด, ๊ทธ prototype๊ฐ์ฒด ์์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ธ๋ณด๊ฒ ๋๋ค.