๐ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์ ์
์๋ฐ๋ ์์์ ์ ์ด์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ ์ํด ์ฌ์ฉํ๋ค. ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ค๋ก์ง ์ฝ๋์ ์ฌ์ฌ์ฉ(๊ณต์ )์ ์ํด์ ์ฌ์ฉํ๋ค.
๐๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์: ES3
var pobj ={
x: 100,
y: 200,
myShape: 'Player',
display: function(){
document.write("<h1>"+this.x+", "+this.y+"="+this.myShape+"</h1>")
}
};
pobj.display();
๐ ์์ฑ์ํจ์ ํจํด์ ๊ฐ์ฒด ์์ฑ: ES5
// java: ClassType object = new ClassType();
function Person(){ // ์์ฑ์ํจ์๋ฅผ ๋ง๋ ๋ค๊ณ ์๊ฐ.
// ์ธ์คํด์ค์ ๊ตฌ์ฑ์์๋ฅผ ์ด๊ธฐํ
this.x= 100; // ํจ์์ ์์ฑ์ํจ์ ํจํด์ธ ๊ฒฝ์ฐ this๋ฅผ ๊ผญ ์จ์ ์ ์ธํด์ผํ๋ค.(= ์ธ์คํด์ค๋ณ์๋ฅผ ์์ฑํ๊ธฐ์ํด์๋ this ํ์)
this.y= 200;
this.myShape= 'Player';
this.display = function(){
let color = 'green'; // ์ง์ญ๋ณ์
document.write('x=' + this.x);
document.write(', y=' + this.y);
document.write(', myShape' + this.myShape);
document.write(', color=' + color); // ์ง์ญ๋ณ์๋๊น this ์ ์ธ
document.write('<hr>');
};
};
let pObj = new Person(); // ES5์ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์
pObj.display();
ํ์ง๋ง ํด๋น ๋ฐฉ๋ฒ์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋๋ฌด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ prototype์ ์ด์ฉํ์ฌ ์ฌ์ฉํ๋ค.
ProtoType์ ์ฝ๋๋ฅผ ๋ฃ๊ณ ๊ณต์ ํ๋ ๊ณต๊ฐ์ด๋ค.
1. ์ฌ์ฉ ๋ฐฉ๋ฒ
Person.prototype.getName= function(){
return this.name;
};
Person.prototype.setName= function(value){
this.name=value;
};
ํญ์ prototype์ ํ์ดํํ๊ธฐ ๊ท์ฐฎ๊ธฐ๋๋ฌธ์ Function๊ฐ์ฒด์ ํจ์๋ฅผ ์ ์ธํด ํด๋น ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ค.
2. prototype๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๋ชจ๋ ํจ์๊ฐ์ฒด?๋ Function.prototype์ ๊ณต์ ํ๋ค.
๋ฐ๋ผ์ Function.prototype์ ์์ฑํ๋ฉด ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต๋์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
๐ ProtoType ์ฌ์ฉ
ํญ์ .prototype์ ์์ฑํ์ง์๊ณ Function ๊ฐ์ฒด์ prototype์ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ํจ์๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ค.
// ES5: ์์ฑ์ ํจ์ ํจํด
function Person(arg){
this.name= arg;
};
// โญ
Function.prototype.method= function(name, func){
this.prototype[name]= func;
}
Person.method("setName", function(value){
this.name=value;
});
Person.method("getName", function(value){
return this.name+": Person";
});
var man= new Person("๋จ์");
console.log(man.getName());
๐ Class ์ฌ์ฉ: ES6
extends๋ prototype ๊ธฐ๋ฐ์ผ๋ก ๋์: Rabbit.prototype.[[Prototype]]์ Animal.prototype์ผ๋ก ์ค์ ํ๋ค. [[Prototype]]: ํฌ์ธํ ํ๋ค๋ ์๋ฏธ, ๋ธ๋ผ์ฐ์ ๋ง๋ค __proto__๋ฅผ ์ง์ํ์ง์๊ธฐ๋ ํด์ ๊บฝ์ ๋ก ํํํจ.
class Animal{
constructor(name){
this.speed= 0;
this.name= name;
}
run(speed){
this.speed= speed;
alert(`${this.name}์/๋ ์๋ ${this.speed}๋ก ๋ฌ๋ฆฝ๋๋ค.`);
}
stop(){
this.spped= 0;
alert(`${this.name}์ด/๊ฐ ๋ฉ์ท์ต๋๋ค.`);
}
}
class Rabbit extends Animal{
hide(){
alert(`${this.name}์ด/๊ฐ ์จ์์ต๋๋ค.`);
}
}
let bear= new Animal("๊ณฐ");
let whiteRabbit= new Rabbit("ํฐ ํ ๋ผ");
bear.run(10);
// bear.hide(); error
whiteRabbit.hide();
whiteRabbit.run(5);
[[์ฐธ๊ณ ์๋ฃ]]
'๐.๋์ธํ๋ > ๐.์นด์นด์คํด๋ผ์ฐ๋์ค์ฟจ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ์ธ๋ฑ์ค( Index ) (0) | 2024.01.03 |
---|---|
[DB] ๋ทฐ VIEW (0) | 2024.01.03 |
[DB] ์ ๊ทํ (0) | 2024.01.02 |
[DB] ๋ถ์ ์ง์(sub query) ์ฐ์ต๋ฌธ์ (0) | 2023.12.29 |
[DB] ๋ถ์ ์ง์(subquery) (0) | 2023.12.29 |