ํ๋กํ ์ฒด์ธ์ด ๋ฌด์์ธ์ง, .prototype
,__proto__
ํค์๋์ ๋ํด ํ์ต ํ๋ค.
ํ๋กํ ํ์ ์ฒด์ธ์ ์๊ธฐ์ ํ๋กํ ํ์ ์ด ๋ฌด์์ธ๊ฐ์ ๋ํด ์ง๊ณ ๋์ด๊ฐ์ผํ๋ค.
ํ๋กํ ํ์
์ด๋ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด
ํ๋กํ ํ์
= ์ํ๊ฐ์ฒด(original form) = ๋ถ๋ชจ ๊ฐ์ฒด ์ ์ ์
๋ถ๋ชจ ์ ์ ์ ๊ธฐ๋ก(์์ฑ, ๋ฉ์๋)์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ค.
์์ ํ๋กํ ํ์ ๊ฐ์ฒด๋ก ๋ถํฐ ๋ฉ์๋์ ์์ฑ์ ์์ ๋ฐ๋๋ค. ๊ทธ ์์ ํ๋กํ ํ์ ๊ฐ์ฒด๋ ๋ง์ฐฌ๊ฐ์ง๋ค. (๋ถ๋ชจ ์ ์ ์ ์์)
prototype
์__proto__
prototype
,__proto__
์ ๊ณตํต์ ์ ๋ ๋คprototype
์ ๊ฐ๋ฆฌํจ๋ค.function person(){}
persen ํจ์
๋ฅผ ์์ฑํ ๊ฒฝ์ฐ
person
๊ณผperson's prototype
์ด ์์ฑ๋๋ค.
person
์ ์๋์ผ๋กprototype
์ ์์ฑ ๋๋ฉฐ
person's prototype
์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
let kim = new person();
์ฌ๊ธฐ์ ์ธ์คํด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒฝ์ฐ
kim
์ ์๋์ผ๋ก__proto__
๊ฐ ์์ฑ๋๋ฉฐ ์ด ๋ํperson's prototype
์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
.prototype
(์์ฑ์์ ์์ฑ)๋ถ๋ชจ ๊ฐ์ฒด์ ์์ฑ์ผ๋ก prototype
์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
.__proto__
(๊ฐ๋ณ ๊ฐ์ฒด์ ์์ฑ)์ธ์คํด์ค ๊ฐ์ฒด(์์ ๊ฐ์ฒด)์ ์์ฑ์ผ๋ก ๋ถ๋ชจ์ prototype
์ ๊ฐ์ฒด๋ฅผ ๋ํ ๋ธ๋ค.
๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ถ๋ชจ ๊ฐ์ฒด์ ํจ์๋ฅผ ํธ์ถํ๋ค.(๋ถ๋ชจ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ด)
()
๊ฐ ์์ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค ์์ฑ์๋ฅผ ๊ฐ์ ธ์จ๋ค..
๊ฐ ์์ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค.class ๋ถ๋ชจ ํด๋์ค{
constructor(color, food){
this.color = "red";
this.fodd = "apple";
}
}
์์ ํด๋์ค extends ๋ถ๋ชจ ํด๋์ค{
constructor(name, color, food){
super(color, food); // ๋ถ๋ชจ ํด๋์ค ์์
this.name = "jieun";
/*
๋ถ๋ชจ ์์ฑ์ด ์๋์ผ๋ก ์์๋๋ค.
this.color = "red";
this.fodd = "apple";
*/
}
}
ํ๋กํ ํ์
์ฒด์ธ์ด ๋ฌด์์ด๊ณ .prototype
์ ,__proto__
์ ์ฐจ์ด์ ์ ๋ํด ์ ์ ์์๋ค.
.prototype
์ __proto__
์ ์๋ก ๊ณตํต์ ์ ์์ง๋ง
๋ถ๋ชจ, ์์์ ์์ฑ์ด๋ผ๋ ์ฐจ์ด์ ์ด ์๋ ๊ฑฐ ๊ฐ๋ค.
๊ณต๋ถํ ๋ ์ฐธ๊ณ ํ๊ธฐ ์ข์ ์์
๐ https://youtu.be/wT1Bl5uV27Y