[JavaScript]νλ‘ν νμ (Prototype)κ³Ό κ°μ²΄
π€νλ‘ν νμ
κ³Ό κ°μ²΄
βͺοΈ μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄λ‘ κ°μ²΄λ₯Ό μ΄μ©νμ¬ νλ‘κ·Έλ¨ μμ± - μλ°μ€νΈλ¦½νΈλ λͺ¨λ κ°μ κ°μ²΄λ‘ νννμ¬ μ²λ¦¬
βͺοΈ κ°μ²΄(Object) : νμ€μ μ‘΄μ¬νλ νΉμ λμμ νλ‘κ·Έλ¨μμ μ¬μ©νκΈ° μν΄ νλ‘νΌν°(Property : ννλμμ μμ±)μ λ©μλ(Method : ννλμμ νμ)λ₯Ό ꡬμ±νμ¬ μμ±ν κ°
βͺοΈ μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ²΄λ νλ‘ν νμ (prototype)μ΄λΌλ κ°μ²΄λ₯Ό κ°μ§κ³ μκ³ , κ·Έλ€μ νλ‘ν νμ μΌλ‘λΆν° νλ‘νΌν°μ λ©μλλ₯Ό μμλ°μ.
μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ²΄λ μ΅μν νλ μ΄μμ λ€λ₯Έ κ°μ²΄λ‘λΆν° μμμ λ°μΌλ©°, μ΄λ μμλλ μ 보λ₯Ό μ 곡νλ κ°μ²΄λ₯Ό νλ‘ν νμ (prototype)μ΄λΌκ³ ν¨.
βͺοΈ μλ°μ€ν¬λ¦½νΈλ ν΄λμ€(Class) μλ£ν λμ ν΄λμ€ ν¨μ(νλ‘ν νμ
- Prototype)μ μ¬μ©νμ¬ κ°μ²΄ μμ± - new μ°μ°μλ‘ ν΄λμ€ ν¨μλ₯Ό νΈμΆνμ¬ κ°μ²΄ μμ±
βͺοΈ ES6μμλ ν΄λμ€ μλ£νμ μ μΈνμ¬ new μ°μ°μλ‘ ν΄λμ€μ μμ±μ(Constructor)λ₯Ό νΈμΆνμ¬ κ°μ²΄ μμ±
βͺοΈ ν΄λμ€ ν¨μ(ν΄λμ€ μλ£ν)λ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μμ±νλ μ΄μ λ λμΌν νλ‘νΌν°μ λ©μλκ° ν¬ν¨λ λ€μμ κ°μ²΄λ₯Ό μ½κ² μμ±νκΈ° μν μ¬μ© - μμ°μ± λ° μ μ§λ³΄μμ ν¨μ¨μ± μ¦κ°
πν΄λμ€ ν¨μ(νλ‘ν νμ
- Prototype) μμ± - κ°μ²΄λ₯Ό μμ±νκΈ° μν ν¨μ
=> μΌλ°ν¨μμ ꡬλΆνκΈ° μν ν¨μλͺ
μ 첫문μλ₯Ό λλ¬Έμλ‘ μμ± - νμ€μΉΌ νκΈ°λ²
=> ν΄λμ€ ν¨μμ λ§€κ°λ³μλ‘ κ°μ μ λ¬λ°μ νλ‘νΌν°μ μ΄κΈ°κ°μΌλ‘ μ μ₯
function Student(num, name, address) {
//this ν€μλλ₯Ό μ¬μ©ν΄ νλ‘νΌν°μ λ©μλ νν
// => this : ν΄λμ€ ν¨μμμ κ°μ²΄λ₯Ό νννκΈ° μν ν€μλ
//this ν€μλλ‘ λ³μμ κ°μ μ μ₯νμ¬ νλ‘νΌν° μ μΈ
//νλ‘νΌν°(Property) : κ°μ²΄μ μμ±κ°μ μ μ₯νκΈ° μν λ³μ - λ©€λ²λ³μ
this.num=num;
this.name=name;
this.address=address;
//this ν€μλλ‘ λ³μμ ν¨μλ₯Ό μ μ₯νμ¬ λ©μλ μ μΈ
// => λ©μλμμλ this ν€μλλ‘ νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νμν λͺ λ Ή μμ±
// => κ°μ²΄λ§λ€ λ©μλλ₯Ό λ°λ‘ μ μ₯νμ¬ μ¬μ© - κ°μ²΄ κ°μλ§νΌ λ©μλκ° λ§λ€μ΄μ Έ λ©λͺ¨λ¦¬ μ¬μ© λΉν¨μ¨μ
//λ©μλ(Method) : κ°μ²΄μ νμ(κΈ°λ₯)μ ν¨μλ‘ νννμ¬ μ μ₯νκΈ° μν λ³μ - λ©€λ²ν¨μ
this.display=function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
}
this.setValue=function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
}
μμμμ²λΌ ν΄λμ€ ν¨μ λ΄λΆμμ λ©μλλ₯Ό μμ±νμ§ μκ³ , μΈλΆμμ λ©μλλ₯Ό μΆκ°ν μλ μλ€.
μμμ μμ±λ λ©μλκ° μλ€κ³ κ°μ νλ©΄, μλμ κ°μ΄ μμ±
//ν΄λμ€ ν¨μ(νλ‘ν νμ - Prototype) μΈλΆμμ λ©μλ μΆκ°
// => κ°μ²΄ κ°μμ μκ΄μμ΄ ν΄λμ€ ν¨μ λ΄λΆμ λ©μλκ° νλλ§ μμ±λμ΄ μ¬μ©
Student.prototype.display=function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
}
Student.prototype.setValue=function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
or μ λ°©λ² λμ μ νλ²μ μΆκ° κ°λ₯
//ν΄λμ€ ν¨μ λ΄λΆμ λ€μμ λ©μλλ₯Ό κ°μ²΄λ‘ μΆκ°νμ¬ μμ±
Student.prototype={
"display" : function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
},
"setValue" : function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
}
πν΄λμ€ ν¨μ(νλ‘ν νμ - Prototype)λ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²
=> new μ°μ°μλ‘ ν΄λμ€ ν¨μλ₯Ό νΈμΆνμ¬ κ°μ²΄ μμ±νκ³ μμ±λ κ°μ²΄λ₯Ό λ³μμ μ μ₯ - κ°μ²΄ν λ³μ
νμ) var λ³μλͺ = new ν΄λμ€ν¨μ(κ°, κ°, ...);
var student1=new Student(1000, "νκΈΈλ", "μμΈμ κ°λ¨κ΅¬");
alert("student1 = "+student1);//student1 = [object Object]
alert("λ³μμ μλ£ν = "+typeof(student1));//λ³μμ μλ£ν = object
newμ°μ°μλ₯Ό μ¬μ©ν΄ Student ν΄λμ€ ν¨μλ₯Ό νΈμΆνμ¬ κ°μ²΄λ₯Ό μμ±νκ³ , μ΄λ₯Ό student1μ΄λΌλ λ³μμ μ μ₯ν¨.
student1μ μλ£νμ νμΈν΄λ³΄λ©΄ objectλΌλ κ²μ μ μ μμ.
//κ°μ²΄λ [ . ]μ°μ°μλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ νλ‘νΌν°μ λ©μλ μ¬μ© κ°λ₯
//λ°©λ²1)
alert("νλ² = "+student1.num+", μ΄λ¦ = "+student1.name+", μ£Όμ = "+student1.address);
//λ°©λ²2)
student1.display();
κ°μ²΄ν λ³μλ₯Ό νμ©νμ¬ νλ‘νΌν°μ λ©μλ μ¬μ© κ°λ₯. μ λ λ°©λ² λͺ¨λ μλμ κ°μ κ²°κ³Ό μΆλ ₯.
student2λΌλ λ³μμ μλ‘μ΄ νλ‘νΌν°λ₯Ό λ§€κ°λ³μλ‘ μ λ¬νμ¬ Student ν΄λμ€ ν¨μ νΈμΆ λ° κ°μ²΄ μμ±.
var student2=new Student(2000, "μκΊ½μ ", "μμΈμ μ’ λ‘ꡬ");
student2.display();
λ©μλ νΈμΆ μ, μλμ κ°μ κ²°κ³Ό μΆλ ₯.
μ μ€μ΅μμ μ 체μ½λπ©π»
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript</title>
</head>
<body>
<script type="text/javascript">
//ν΄λμ€ ν¨μ(νλ‘ν νμ
- Prototype) μμ± - κ°μ²΄λ₯Ό μμ±νκΈ° μν ν¨μ
// => μΌλ°ν¨μμ ꡬλΆνκΈ° μν ν¨μλͺ
μ 첫문μλ₯Ό λλ¬Έμλ‘ μμ± - νμ€μΉΌ νκΈ°λ²
// => ν΄λμ€ ν¨μμ λ§€κ°λ³μλ‘ κ°μ μ λ¬λ°μ νλ‘νΌν°μ μ΄κΈ°κ°μΌλ‘ μ μ₯
function Student(num, name, address) {
//this ν€μλλ₯Ό μ¬μ©ν΄ νλ‘νΌν°μ λ©μλ νν
// => this : ν΄λμ€ ν¨μμμ κ°μ²΄λ₯Ό νννκΈ° μν ν€μλ
//this ν€μλλ‘ λ³μμ κ°μ μ μ₯νμ¬ νλ‘νΌν° μ μΈ
//νλ‘νΌν°(Property) : κ°μ²΄μ μμ±κ°μ μ μ₯νκΈ° μν λ³μ - λ©€λ²λ³μ
this.num=num;
this.name=name;
this.address=address;
/*
//this ν€μλλ‘ λ³μμ ν¨μλ₯Ό μ μ₯νμ¬ λ©μλ μ μΈ
// => λ©μλμμλ this ν€μλλ‘ νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νμν λͺ
λ Ή μμ±
// => κ°μ²΄λ§λ€ λ©μλλ₯Ό λ°λ‘ μ μ₯νμ¬ μ¬μ© - κ°μ²΄ κ°μλ§νΌ λ©μλκ° λ§λ€μ΄μ Έ λ©λͺ¨λ¦¬ μ¬μ© λΉν¨μ¨μ
//λ©μλ(Method) : κ°μ²΄μ νμ(κΈ°λ₯)μ ν¨μλ‘ νννμ¬ μ μ₯νκΈ° μν λ³μ - λ©€λ²ν¨μ
this.display=function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
}
this.setValue=function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
*/
}
//ν΄λμ€ ν¨μ(νλ‘ν νμ
- Prototype) μΈλΆμμ λ©μλ μΆκ°
// => κ°μ²΄ κ°μμ μκ΄μμ΄ ν΄λμ€ ν¨μ λ΄λΆμ λ©μλκ° νλλ§ μμ±λμ΄ μ¬μ©
/*
Student.prototype.display=function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
}
Student.prototype.setValue=function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
*/
//ν΄λμ€ ν¨μ λ΄λΆμ λ€μμ λ©μλλ₯Ό κ°μ²΄λ‘ μΆκ°νμ¬ μμ±
Student.prototype={
"display" : function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
},
"setValue" : function(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
}
//ν΄λμ€ ν¨μ(νλ‘ν νμ
- Prototype)λ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²
var student1=new Student(1000, "νκΈΈλ", "μμΈμ κ°λ¨κ΅¬");
//alert("student1 = "+student1);//student1 = [object Object]
//alert("λ³μμ μλ£ν = "+typeof(student1));//λ³μμ μλ£ν = object
//κ°μ²΄λ .μ°μ°μλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ νλ‘νΌν°μ λ©μλ μ¬μ© κ°λ₯
//alert("νλ² = "+student1.num+", μ΄λ¦ = "+student1.name+", μ£Όμ = "+student1.address);
student1.display();
var student2=new Student(2000, "μκΊ½μ ", "μμΈμ μ’
λ‘ꡬ");
student2.display();
</script>
</body>
</html>
+μ°Έκ³
κ°μ²΄κ° λμ§..
2024.01.05 - [JavaScript] - [JavaScript]κ°μ²΄(Object)
[JavaScript]κ°μ²΄(Object)
μλ°λ λΉμ·νλ―νλ©΄μλ λκ° ν·κ°λ¦¬κ² νλ μλ°μ€ν¬λ¦½νΈμ κ°μ²΄.. κ°μ²΄.. νλ‘ν νμ .. μ΄κ² λ€ λλ° λΌλ μκ°μ΄ κ³μ λ€μλ€. κ·Έλ¬λ€κ° TCP Schoolμ μ 리λ λ΄μ©μ΄ κ°μ₯ μ΄ν΄νκΈ° μ¬μ λ€. μ
sukis.tistory.com
νλ‘ν νμ κ°λ μ‘κΈ° μ΅κ³ μ μμ!!!
https://youtu.be/wUgmzvExL_E?si=LDxhXnsyLHz4wT2_
νλ‘ν νμ κ΄λ ¨ μ€λͺ κΈ
https://tcpschool.com/javascript/js_object_prototype
μ½λ©κ΅μ‘ ν°μ¨νΌμ€μΏ¨
4μ°¨μ°μ νλͺ , μ½λ©κ΅μ‘, μννΈμ¨μ΄κ΅μ‘, μ½λ©κΈ°μ΄, SWμ½λ©, κΈ°μ΄μ½λ©λΆν° μλ° νμ΄μ¬ λ±
tcpschool.com