Object (๊ฐ์ฒด)
์๋ก ์ฐ๊ด๋ ๋ณ์์ ํจ์๋ฅผ ๊ทธ๋ฃนํํด์ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ
var memberObject = {
tami: 'name',
developer: 'java',
age:'25',
}
this
๋ฉ์๋๊ฐ ์์ ์ด ์ํด์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋
๊ฐ์ฒด๊ฐ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ฐธ์กฐํ ์ ์์
var kim = {
name: 'kim',
first:10,
second:20,
sum: function(){
return this.first+this.second;
}
}
console.log(kim.sum()); //30
์์ ์์์ ๊ฐ์ฒด๋ ์์์ ์ผ๋ก ๋ง๋ ๊ฐ์ฒด
๊ฐ์ฒด๋ฅผ ์ฐ์ด๋ด๋ ๋์์ ๋ฐ๋ก ๊ตฌํ ํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํด์ผํจ
Prototype
javascript ๋ prototype based languageโจ
์์ฑ์ ์์์ ๋ฉ์๋๋ฅผ ๋ง๋๋๊ฒฝ์ฐ ( this.sum)
function Person(name, first, secod, third) {
this.name= name;
this.first = first;
this.secod = secod;
this.sum = function(){
return this.first + this.second;
}
}
var kim = new Person('kim',10,20);
console.log("kim.sun()",kim.sum());
this.sum = function(){
return this.first + this.second;
}
์์ฑ์๊ฐ ์์ฑ๋ ๋๋ง๋ค sum์ด๋ผ๋ ํจ์์ ๊ฐ์ฒด๊ฐ ๊ณ์ ์๋ก ์์ฑ๋๊ณ ์์ => ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
์์ฑ์ Person ์ผ๋ก ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ์์ฑ๊ณผ, ํจ์๋ฅผ ๋ง๋ค์ด์ผ ํจ
์์ฑ์๋ฅผ ํตํด ๋ง๋ ๊ฐ์ฒด๋ค์ด ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ์์ฑ ๋ง๋ค๊ธฐ
Prototype ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
function Person(name, first, second, third) {
this.name= name;
this.first = first;
this.second = second;
}
//Person์ด๋ผ๋ ์์ฑ์ ํจ์์ ๋ชจ๋ ๊ฐ์ฒด์์ ์ฌ์ฉํ ๋ฉ์๋ ์์ฑ
Person.prototype.sum = function(){
return this.first + this.second;
}
var kim = new Person('kim',10,20);
console.log("kim.sun()",kim.sum());
sum์ ํ๋ฒ๋ง ์คํ
sum์ Person์์ ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ณต์ ํจ => ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
function Person(name, first, second, third) {
this.name= name;
this.first = first;
this.second = second;
}
//Person์ด๋ผ๋ ์์ฑ์ ํจ์์ ๋ชจ๋ ๊ฐ์ฒด์์ ์ฌ์ฉํ ๋ฉ์๋ ์์ฑ
Person.prototype.sum = function(){
return 'prototype' + (this.first + this.second);
}
var kim = new Person('kim',10,20);
var lee = new Person('lee',10,10);
kim.sum = function(){
return 'this'+(this.first + this.second);
}
console.log("kim.sun()",kim.sum());
console.log("lee.sun()",lee.sum());
1) ๊ทธ ๊ฐ์ฒด ์์ ์ด sum์ด๋ผ๋ ์์ฑ์ ์ฐพ์
: kim.sum
2) ๊ฐ์ฒด ์์ฑ์์ธ Prototype์ sum์ด๋ผ๋ ์์ฑ์ ์ฐพ์
: lee.sum์ ๋ฐ๋ก ์์ผ๋ -> prototype.sum ์
๐ง์๊ฐํด๋ณผ ๊ฒ
ํ๋กํ ํ์ ์ ์๋ฏธ:
ํจ์๊ฐ ์ ์ธ๋ ๋ ์๋์ผ๋ก ์ ์ธ๋๋ ์์ฑ๊ฐ์ฒด
๊ทธ ์์ฑ์ ํจ์๋ก ๋ง๋ค์ด์ง ๋ชจ๋ ๊ฐ์ฒด๋ ๊ทธ ํจ์์ porotype์ ์ฐธ์กฐํ๋ค.
ํ๋กํ ํ์ ์ ์ฌ์ฉํ์ง ์๊ณ ์์ฑ์ ์์์ ๋ฉ์๋์ ์์ฑ์ ์ ์ํ๋ฉด ๋ฐ์ํ๋ ๋นํจ์จ :
์์ฑ์๊ฐ ์์ฑ๋ ๋๋ง๋ค ๋ฉ์๋๋ฅผ ์๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌํด์ง๋ค.
ํ์ง๋ง, ํ๋กํ ํ์ ์ ๋ง๋ค๋ฉด ์์ฑ์ ํจ์๊ฐ ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด
ํ๋กํ ํ์ ์ ํตํด ๋ง๋ค์ด์ง ๋ฉ์๋๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฌ์ฌ์ฉํ๊ณ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋์์ง๋ค.
'๐ JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] __proto__ ์ ์์ (0) | 2021.03.11 |
---|---|
JavaScript ํจ์ํธ์ถ Call / Bind ๋ฉ์๋ (0) | 2021.03.11 |
[JavaScript] Class ์ ์์ (0) | 2021.03.10 |
[์๋ฐ์คํฌ๋ฆฝํธ] fetch() API ํจ์๋ก ํธ์ถํ๊ธฐ (4) | 2021.02.26 |
์๋ฐ์คํฌ๋ฆฝํธ์ Promise()๋ก callback์ง์ฅ ๋ฒ์ด๋๊ธฐ (0) | 2021.02.25 |
๋๊ธ