November 01, 2020
let esanghaessi = {
name: '์ด์ํด์จ',
type: 'ํ',
attack1: 45,
attack2: 95,
sum: function() {
return this.attack1 + this.attack2
},
}
let ggoboogi = { name: '๊ผฌ๋ถ๊ธฐ', type: '๋ฌผ', attack1: 75, attack2: 25 }
๊ผฌ๋ถ๊ธฐ๋ ์ด์ํด์จ์ ์ ์ ํฉ์น๊ธฐ ์คํฌ์ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์ถ๋ค!
ggoboogi.__proto__ = esanghaessi
console.log(ggoboogi.sum())
100
๊ผฌ๋ถ๊ธฐ๋ ์๊ฐํ๋ค.
๋ ์ ์ํฉ์น๊ธฐ๋ ํ ์ ์๊ณ ์ ์ํ๊ท ๋ ํ ์ ์์ด!
์ด๊ฑด ๋๋ง ํ ์ ์์ด ์ด์ํด์จ๋ ๋ชปํ๋ ๊ธฐ์ ์ด์ผ~ ์ด์ํด์จ ๋ฐ๋ณด~(?)
๋ผ์ด์ธ์ ์ ๊ธฐ์ ์ ์ฐ๊ณ ์ถ์ง๋ง ์ฐธ๊ธฐ๋ก ํ๊ณ ๊ผฌ๋ถ๊ธฐ์๊ฒ ์ ์ ํ๊ท ์คํฌ์ ๋ถ์ฌํด ์ฃผ์.
let ggoboogi = {
name: '๊ผฌ๋ถ๊ธฐ',
type: '๋ฌผ',
attack1: 75,
attack2: 25,
avg: function() {
return (this.attack1 + this.attack2) / 2
},
}
ggoboogi.__proto__ = esanghaessi // ๋ค์ ์ฐ๊ฒฐํด ์ฃผ๊ณ
console.log("๊ผฌ๋ถ๊ธฐ์ ๊ณต๊ฒฉ ์ ์ ํฉ๊ณ :" + ggoboogi.sum())
๊ผฌ๋ถ๊ธฐ์ ๊ณต๊ฒฉ ์ ์ ํฉ๊ณ :100
ggoboogi.avg()
console.log("๊ผฌ๋ถ๊ธฐ์ ๊ณต๊ฒฉ ์ ์ ํ๊ท :" + ggoboogi.avg())
๊ผฌ๋ถ๊ธฐ์ ๊ณต๊ฒฉ ์ ์ ํ๊ท :50
๊ผฌ๋ถ๊ธฐ๋ ์ด์ํด์จ์ ๊ธฐ์ ์ ๋ชจ๋ ๋ฐ๊ณ ๋ค๋ฅธ ๊ณ ์ ์คํฌ๋ ๋ถ๋ฆด ์ค ์๊ฒ ๋์๋ค.
์ด๋ฒ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๋ณผ๊น?
์๋ธ ๊ฐ์ฒด๋ก ์ง์ฐ๋ ๊ธฐ๋ฅผ ๋ง๋ค์๋ค.
let esanghaessi = { name : '์ด์ํด์จ',
type : 'ํ',
attack1 : 45,
attack2 : 95,
sum : function () {
return this.attack1 + this.attack2
}
}
let jiwooleegi = Object.create(esanghaessi);
console.log(jiwooleegi)
{}__proto__:
attack1: 45
attack2: 95
name: "์ด์ํด์จ"
sum: ฦ ()
type: "ํ"
__proto__: Object
// ์ง์ฐ๋ ๊ธฐ์ ์์ฑ์ ๋ฃ์ด์ค๋ค.
jiwooleegi.name = "์ง์ฐ๋ ๊ธฐ"
jiwooleegi.type = "๊ผฌ์ฅ์๊ฒฐ์ ์ฒด"
// ์ง์ฐ๋ ๊ธฐ๋ง ์ธ ์ ์๋ avg ๋ฉ์๋
jiwooleegi.avg = function () {return (this.attack1 + this.attack2) / 2}
console.log(jiwooleegi)
name: "์ง์ฐ๋ ๊ธฐ", type: "๊ผฌ์ฅ์๊ฒฐ์ ์ฒด", avg: ฦ
console.log(`${jiwooleegi.name}์ ๊ณต๊ฒฉ ์ ์ ํฉ๊ณ : ${jiwooleegi.sum()}, ๊ณต๊ฒฉ ์ ์ ํ๊ท : ${jiwooleegi.avg()}`)
์ง์ฐ๋ ๊ธฐ์ ๊ณต๊ฒฉ ์ ์ ํฉ๊ณ : 140, ๊ณต๊ฒฉ ์ ์ ํ๊ท : 70
์ง์ฐ๋ ๊ธฐ๋ ๋ฏธ์์ ๋ฑํ ์ค๋ช ์ ๋ฌ์ง ์์๋ค.
ํ์ง๋ง ์ง์ฐ๋ ๊ธฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ Object.create() ๋ ์ง์ฐ๋ ๊ธฐ๊ฐ ์ด์ํด์จ ๊ณต์ฅ ์ถ์ ์ด๋ผ๋(?) ๊ฒ์ ์๊ฒ ํด์ค๋ค.