๐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๊ธฐ์ค
๐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ
[[Prototype]]
์ด๋ผ๋ ์จ๊น ํ๋กํผํฐ๋ฅผ ๊ฐ๋๋ค.null
์ด๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ๋๋๋ฐ, ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ์ฐธ์กฐ ๋์์ 'ํ๋กํ ํ์
(prototype)'์ด๋ผ ๋ถ๋ฅธ๋ค.๐ prototype ์ด๋ proto์ ์ฐจ์ด์
๋ฌธ๋ฒ์ด ๋ค๋ฅด๋ค.
prototype
:
prototype
์ ํจ์ ๊ฐ์ฒด(function
)๋ง ๊ฐ์ง๊ณ ์๋ ์์ฑ์ด๋ค.prototype
์์ฑ์ ํด๋น ํจ์๋ก ์์ฑ๋ ๊ฐ์ฒด๋ค์ด ๊ณต์ ํ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.prototype
์ ์์ฑ์ ํจ์๋ฅผ ํตํด ์์ฑ๋ ๊ฐ์ฒด๋ค์ด ์์๋ฐ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ง์ ํ๋ค.__proto__
:__proto__
๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ด๋ถ ์์ฑ์ด๋ค.__proto__
์์ฑ์ ํด๋น ๊ฐ์ฒด์ ์์ ํ๋กํ ํ์
(๋ถ๋ชจ ๊ฐ์ฒด)์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.__proto__
๋ฅผ ํตํด ์์ ํ๋กํ ํ์
์ ํ๋กํผํฐ์ ๋ฉ์๋์ ์ ๊ทผํ ์ ์๋ค.๐ ๊ธฐ๋ณธ๋ฌธ๋ฒ
class MyClass {
// ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์์
constructor() { ... }
method1() { ... }
method2() { ... }
method3() { ... }
...
}
์ด์ ๋ฎ์ ์๊ฑฐ ๋๋ฌธ์ ๋ณต์ต์ ๋๋ฌด ๋ฆ๊ฒ๊น์ง ํด์ ์ ์ ๊ฑฐ์ ๋ชป์ค๋ค. ๊ทธ ๊ฒฐ๊ณผ ์์ ์๊ฐ ๋ด๋ด ์กธ์์ ์์ ์ ๊ฑฐ์ ๋ชป๋ค์๊ณ ๋๋ถ์ ์ค๋์ ํผ์ ์์ต๋ง ๊ณ์ ํ๋ค. ๋๋ถ์ ์ดํด๊ฐ ๊ฐ๊ธฐ๋ ํ์ง๋ง ์ญ์๋ ์ด๋ก ์ด๋ผ ์์ฉ์ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ง์ง ๋ถํธ์บ ํ ๊ธฐ๊ฐ๋์์ ์ ์์๊ณ ์ด๊ณ ์ถ๋ค.. ๊ทธ๋ฆฌ๊ณ ๊ณผ์ ๊ฐ ๋์๋๋ฐ ์ง์ง ์ด๋ป๊ฒ ํด์ผํ ์ง ๊ฐ์ด ์ ํ ์์จ๋ค. ์ฒ์์ผ๋ก ๊ณผ์ ์ ์ถ ๋ชปํ ๊น๋ด ๊ฑฑ์ ์ด๋ค.