โบ Object(๊ฐ์ฒด)์์์ ์์
๋ณดํต์ class ๋จ๊ณ์์ ์์์ ๋ฐ๊ณ ์์์ ๋ฐ์ class ๊ฐ object๋ฅผ ๋ง๋ค์ง๋ง
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ์์๋ฐ์ ์ ์์
prototype link
: ๊ฐ์ฒด์ ์์์ ์ฐ๊ฒฐํด์ฃผ๋ ๋งํฌ
prototype object
: sub object๊ฐ ์์์ ๋ฐ์ ๊ฐ์ฒด
์ถ์ฒ)opentutorials.org/module/4047/24626
๊ฐ์ฒด์ ๊ฐ์ฒด ์์
์คํ๋๋
__proto__
์์ 1)
var superObj = {superVal:'super'}
var subObj = {subVal :'sub'}
subObj.__proto__ = superObj;
console.log("subVal",subObj.subVal); //sub
console.log("superVal",subObj.superVal); //super
__proto__ : prototype link๋ฅผ ๊ฑธ์ด ๊ฐ์ฒด ์์ ์ํค๊ธฐ ๊ฐ๋ฅ
1) subObj ์์ superVal ์ฐพ๊ธฐ
2) subObj.__ptoro__ ์ ๋ด๊ธด ๊ฐ์ฒด (superObj)์์ superVal์ฐพ๊ธฐ
๋จ!
subObj.superVal = 'sub';
console.log("super์ superVal",superObj.superVal); //super
subObj.superVal ์ ๊ฐ์ ๋ฐ๊พผ๋ค๊ณ , superObj์ superVal ์ด ๋ณํ์ง ์๋๋ค.
์์ 2)
kim = {
name:'kim',
first:10,
second:20,
sum: function(){return this.first +this.second;}
}
lee = {
name : 'lee',
first:10, second:10,
avg: function(){return (this.first+this.second)/2;}
}
lee.__proto__=kim;
Object.create()
var superObj = {superVal:'super'}
var subObj = Object.create(superObj);
subObj.subVal = 'sub';
//๋๋ฒ๊น
์ ํ๊ธฐ ์ํจ
debugger;
console.log("sub์ subVal",subObj.subVal); //sub
console.log("sub์ superVal",subObj.superVal); //super
subObj.superVal = 'sub';
console.log("super์ superVal",superObj.superVal); //super
subObj๋ superObj๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด
ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ (Mac : command โ + optโฅ + i ) -> Watch ( + superObj, subObj) ์์ ํ์ธํ ์ ์๋ค.
subObj์ __proto__ ๋ superObj
์์ 2)
kim = {
name:'kim',
first:10,
second:20,
sum: function(){return this.first +this.second;}
}
var lee = Object.create(kim);
lee.name = 'lee'
lee.first=10;
lee.second=10;
'๐ JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] Prototype ์ ํตํ ์์ ๊ณผ __proto__ +(MDN ์์ ๋ก ๋ณด๋ Prototype ์์) (0) | 2021.03.12 |
---|---|
[JavaScript ] prototype vs __proto__ + ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.03.11 |
JavaScript ํจ์ํธ์ถ Call / Bind ๋ฉ์๋ (0) | 2021.03.11 |
JavaScript ํ๋กํ ํ์ (prototype) ์ดํด (0) | 2021.03.10 |
[JavaScript] Class ์ ์์ (0) | 2021.03.10 |
๋๊ธ