๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“’ JavaScript

[Javascript] __proto__ ์™€ ์ƒ์†

by Tamii 2021. 3. 11.
๋ฐ˜์‘ํ˜•

โ–บ 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;

 

 

 

 

 


 

๋Œ“๊ธ€