ํ๋กํ ํ์
๐ค ํ๋กํ ํ์ (Prototype)์ด๋?
๐ ํ๋กํ ํ์ ์ ์ฝ๊ฒ ๋งํด ์ ์ ์์ด๋ค.
๐ ์์๋ฅผ ๋ณด์
// ๋ถ๋ชจ ํด๋์ค
function ๊ธฐ๊ณ() {
this.q = "strike",
this.w = "snowball",
}
// ๋ถ๋ชจ ํด๋์ค์ name ์์ฑ ์ถ๊ฐ
๊ธฐ๊ณ.prototype.name = "kim"
// ์์ ์ธ์คํด์ค
let nunu = new ๊ธฐ๊ณ()
๐ nunu๋ผ๋ instance์๋ name์ด๋ผ๋ ์์ฑ์ด ์๋ค. ์ค์ง ๋ถ๋ชจ ํด๋์ค์๋ง ์กด์ฌํ๋ค. ๊ทผ๋ฐ nunu.name์ด๋ผ๊ณ ์ ๊ทผํ๋ฉด "kim"์ด๋ผ๊ณ ๋ฌ๋ค.
๐ค ๋ถ๋ชจ๊ฐ ๊ฐ์ง ์์ฑ์ ์์์์ ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ ๋ญ๊น?
๐ object์์ ์๋ฃ ๋ฝ์ ๋ ์ผ์ด๋๋ ์ผ์ด๋ค.
๐ ์์์ด ํด๋น ์์ฑ์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉด ๋ถ๋ชจ์ ์ ์๋ฅผ ์ดํด๋ณธ๋ค. ๊ฑฐ๊ธฐ์ ํด๋น ์์ฑ์ด ์์ผ๋ฉด ์ถ๋ ฅํ๋ค. ๋ถ๋ชจ์๋ ์์ผ๋ฉด ์กฐ๋ถ๋ชจํํ ๊ฐ์ ์ฐพ์๋ณธ๋ค. ์ด๋ฐ ๋ฐฉ์์ Prototype.chain์ ์๋ฆฌ๋ค.
let array = [4, 2, 1];
array.sort();
๐ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ sort()๋ผ๋ ๋ฉ์๋๋ฅผ ์ธ ์ ์๋ ์ด์ ๋ prototype์ด๋ ๊ด๋ จ์ด ์๋ค. Array.prototype()์ ๋ธ๋ผ์ฐ์ ์ฝ์์ฐฝ์์ ์ฐ์ด๋ดค๋ค.

๐ ์ฐ๋ฆฌ๊ฐ ์ง์ sort()๋ผ๋ ํจ์๋ฅผ ๊ตฌํํ์ง ์์๋ ์ธ ์ ์๋๊ฑด Array.prototype ์์ ์ด๋ฏธ ์๋ ๊ฒ์ ๊ฐ๋ค ์ฐ๊ธฐ ๋๋ฌธ์ด๋ค. Array๋ผ๋ ๋ถ๋ชจ ์์์ ์ ๋ ฌํจ์๊ฐ ์กด์ฌํ๊ณ ์์์ธ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ทธ๋ฅ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋๋ค.