Prototype Pattern
JavaScript ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค.
์๋ฏธ
๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ฌ ์์ฑํจ์ผ๋ก์จ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ด๋ ํจํด์ด๋ค.
JavaScript Prototype
JavaScript์์๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์์ฒด์ ์ผ๋ก ํ๋กํ ํ์ ์ ๊ฐ์ง๋ค. (ํ๋กํ ํ์ ๊ธฐ๋ฐ ์ธ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ด์ ์ด๋ค.) ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํด๋น ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ, ์ด๋ ํด๋์ค ๊ฐ์ฒด ์์ฑ ์์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ํด๋์ค๋ ํ๋กํ ํ์ ์ ๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๊ตฌ๋ฌธ์ ์คํ(syntactic sugar) ์ญํ ์ ํ ๋ฟ ๋ด๋ถ์ ์ผ๋ก๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ์ ์์์ ์ฌ์ฉํ๋ค.
๊ธฐ์กด ๊ฐ์ฒด์ ์์ฑ์ ๊ฐ์ฒด ์์ฑ์์ prototype
ํ๋กํผํฐ์ ์ ์๋๋ค. Object.getPrototypeOf()
, Object.setPrototypeOf()
๋ฉ์๋๋ฅผ ํตํด prototype
์ ์กฐํยท๋ณ๊ฒฝํ ์ ์๋ค.
Prototype Chain
๊ฐ์ฒด๊ฐ ํ๋กํผํฐ๋ ๋ฉ์๋์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ํด๋น ๊ฐ์ฒด์ ๊ทธ ํ๋กํผํฐ๋ ๋ฉ์๋๊ฐ ์๋ค๋ฉด ์๋์ผ๋ก ์์ ํ๋กํ ํ์ ๊ฐ์ฒด์์ ๊ฒ์ํ๋ค. ์ด๋ฅผ ํ๋กํ ํ์ ์ฒด์ธ์ด๋ผ๊ณ ํ๋ค.
์ด ๋ฌธ์์์ ํ๋กํ ํ์
์ฒด์ธ์ ์์ฑํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋น๊ตํ๋๋ฐ, ์๋๋ Object.create()
๋ก ์์ฑํ ์์์ด๋ค.
const dog = {
bark() {
console.log(`๋ฉ๋ฉ!`);
},
};
const myPet = Object.create(dog);
myPet.bark(); // โ ๋ฉ๋ฉ!
console.log(Object.keys(myPet)); // โ []
console.log(Object.keys(Object.getPrototypeOf(myPet))); // โ ['bark']
์ฅ์
ํ๋กํ ํ์ ์ฒด์ธ์ ํตํด ๋์ ๊ฐ์ฒด์ ํ๋กํผํฐ๊ฐ ์ง์ ์ ์ธ๋์ด์์ง ์์๋ ๋๋ฏ๋ก, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
๋จ์
์ค์ ๋ก ์ฝ๋๊ฐ ์คํ๋๋ ๋์
Object.prototype
์ ์์ ํ๋ค๋ ๊ฒ์ ์ฑ๋ฅ๋ฐ์ ์ฐฝ๋ฌธ๋ฐ์ผ๋ก ๋์ ธ๋ฒ๋ฆฐ๋ค๋ ๊ฒ์ ๋ปํฉ๋๋ค. ์ ๋ ํ์ง๋ง์ธ์! - JavaScript engine fundamentals: optimizing prototypes
JavaScript ๊ณต์ ๋ฌธ์์์๋ ๊ฐ๋ ฅํ ๊ฒฝ๊ณ ํ๊ณ ์๋ ๋ด์ฉ์ผ๋ก, ์ธ์ด์ ์ผ๋ก
prototype
์ ์์ ์ ์์ด ์ฑ๋ฅ์ , ๋ฒ์์ ๋ฆฌ์คํฌ๊ฐ ํฌ๋ค.Object.create()
๋ฅผ ์ฌ์ฉํ๋๋ก ํ์.
์ฐธ๊ณ ์๋ฃ
Last updated