prototype
์ํ (์๋์ ํํ) prototype์ ์ด์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์์๊ฐ๋ ์ ์ ๊ณต
(prototype chain)
๋จผ์ ์์ฑ์ ๋ถํฐ ์์ํ๋ฉด, ์์ฑ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์์ด๋ค. ํธ์ถํ ๋ ํจ์์์ new๋ฅผ ๋ถ์ด๋ฉด์ ํจ์๋ ์ผ๋ฐ ํจ์๊ฐ ์๋ ์์ฑ์๋ผ๋ ํจ์๊ฐ ๋๊ณ ๊ทธ๋ ๊ฒ ํด์ ์คํํ ๊ฒฐ๊ณผ๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๊ทธ ๊ฐ์ฒด๋ฅผ returnํ๊ณ o๋ผ๋ ๋ณ์์ ๋ด๊ธด๋ค.
o๋ผ๋ ๋ณ์์์๋ ์์ฑ์๋ก ๋ง๋ค์ด์ง ๊ฐ์ฒด๊ฐ o ์์ ๋ค์ด์๋ค.
์ด๋ ๊ฒ ํ์ง ์๊ณ ์์ฑ์๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์ด์ ๋.. ? ์ฐ๋ฆฌ๊ฐ ์ด๋ ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋, ๊ทธ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ ์ด๋ค ๋ฉ์๋๋ ํ๋กํผํฐ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ก์ง์ด ํ์ํ๊ฑฐ์ง, {} ๋น์ด์๋ ๊ฐ์ฒด๊ฐ ํ์ํ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ, ์ฐ๋ฆฌ๊ฐ ์ป๊ณ ์ ํ๋ ๊ฐ์ฒด์ ์ํ, ๊ฐ์ฒด๊ฐ ์ด๋ค๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง์ ๋ํ ์ ๋ณด๋ prototype
์ด๋ผ๋ ํ๋กํผํฐ์ ์ด ๊ณณ์ ๋ด๊ธด๋ค. Sub๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง ์ ์๊ณ ๊ทธ ํ๋กํผํฐ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ์๋ prototype๋ฅผ ์ฐ๋๋ฐ ์ด ์์ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ค.
๊ทธ๋ผ new๋ฅผ ์ด์ฉํด์ ์์ฑ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด, ์์ฑ์ ํจ์ Sub์ prototype ์ด๋ผ๋ ํ๋กํผํฐ์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ ๊ทธ๊ฒ์ returnํด์ค๋ค.
์์ฑ์๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ฉด prototype์ ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๊ฐ ๋ฆฌํด์ด ๋๋ค.
prototype chain
์ ์ผ ์ฒ์ o๋ผ๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ก ultraProp๊ฐ ์๋์ง ์ฐพ๋๋ค.
o์ property๋ก ultraProp๊ฐ ์์ผ๋ฏ๋ก Sub๋ก ์ฌ๋ผ๊ฐ 2๊ฐ ๊ฐ์ด ๋๋ค.
o์๋ ์๊ณ ๊ทธ๋ผ Sub์ prototype์ ๋ค์ง๋๋ฐ Sub์ prototype์ผ๋ก new Super() ์์ฑ์๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ๊ทธ ๊ฐ์ฒด์ ultraProp = 3์ ๊ฐ์ง๊ณ ์์ด์ 3์ด ๋์ถ๋๋ค.
ultraProp๋ฅผ ์ฐพ๊ธฐ์ํด ๊ณ์ ์ฒด์ธ์ฒ๋ผ ์ฌ๋ผ๊ฐ๋ค.
Sub์๋ง ํ๋กํผํฐ๊ฐ ์ถ๊ฐ ๋๋๊ฒ์ด ์๋๋ผ. Super์ ๊น์ง ์ถ๊ฐ๋์ด์ ์ํฅ์ ๋ผ์น๋ค.
์ด๋ ํ ๊ฐ์ฒด๋ฅผ ์์๋ฐ๊ณ ์ ํ๋ค๋ฉด ์์ฑ์๋ฅผ ์ฌ์ฉํ์
Last updated
Was this helpful?