[JavaScript]ν΄λμ€ μλ£νκ³Ό κ°μ²΄(+ in μ°μ°μ, withꡬ문)
π€ν΄λμ€ μλ£νκ³Ό κ°μ²΄
ES6μμλ class ν€μλλ‘ ν΄λμ€ μλ£νμ μμ±νμ¬ κ°μ²΄ μμ± κ°λ₯ - λ΄λΆμ μΌλ‘ ν΄λμ€ ν¨μ(νλ‘ν νμ )λ‘ μ²λ¦¬
μ€μ΅μμ
Human ν΄λμ€ μμ±
class Human {
//constructor ν€μλλ‘ μμ±μ ν¨μ μμ±
constructor(num) {
//this ν€μλλ₯Ό μ¬μ©ν λ³μμ λ§€κ°λ³μλ‘ μ λ¬λ°μ κ° μ μ₯ - νλ‘νΌν°
this.num=num;
}
}
extends ν€μλλ₯Ό μ¬μ©νμ¬ λΆλͺ¨ν΄λμ€λ₯Ό μμλ°μ μμν΄λμ€ μμ± κ°λ₯
=> λΆλͺ¨ν΄λμ€μ νλ‘νΌν°μ λ©μλλ₯Ό μμλ°μ μ¬μ© κ°λ₯
class Student extends Human {
constructor(num, name, address) {
//super : λΆλͺ¨ν΄λμ€μ κ°μ²΄μ μ°Έμ‘°νκΈ° μν ν€μλ
//super ν€μλλ‘ λΆλͺ¨ν΄λμ€μ μμ±μ ν¨μλ₯Ό νΈμΆνμ¬ λΆλͺ¨ν΄λμ€μ κ°μ²΄ μμ±
super(num);
this.name=name;
this.address=address;
}
//λ©μλ μ μΈ - function ν€μλ μμ΄ ν¨μ μμ±
// => κ°μ²΄μ μκ΄μμ΄ ν΄λμ€ μλ£νμ νλλ§ μμ±λμ΄ μ¬μ©
display() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address);
}
setValue(num, name, address) {
this.num=num;
this.name=name;
this.address=address;
}
}
new μ°μ°μλ‘ ν΄λμ€μ μμ±μ ν¨μλ₯Ό νΈμΆνμ¬ κ°μ²΄ μμ±
=> μμ±μ ν¨μλ ν΄λμ€μ μ΄λ¦μΌλ‘ νΈμΆ
let student=new Student(1000, "νκΈΈλ", "μμΈμ κ°λ¨κ΅¬");
alert("ν΄λμ€μ μλ£ν = "+typeof(Student));//ν΄λμ€μ μλ£ν = function
alert("λ³μμ μλ£ν = "+typeof(student));//λ³μμ μλ£ν = object
//setValue λ©μλλ₯Ό νΈμΆνμ¬, κ°μ λ³κ²½ν μ μμ
student.setValue(2000, "μκΊ½μ ", "μμΈμ μ’ λ‘ꡬ");
student.display();
κ°μ²΄μ μμ(νλ‘νΌν° λλ λ©μλ)λ . μ°μ°μλ₯Ό μ¬μ©νμ¬ μ κ·Ό κ°λ₯ν¨.
alert("νλ² = "+student.num+", μ΄λ¦ = "+student.name+", μ£Όμ = "+student.address);
student.display();
κ°μ²΄μ μμ(νλ‘νΌν° λλ λ©μλ)λ [ ] μ°μ°μλ₯Ό μ¬μ©νμ¬λ μ κ·Ό κ°λ₯ν¨.
alert("νλ² = "+student["num"]+", μ΄λ¦ = "+student["name"]+", μ£Όμ = "+student["address"]);
student["display"]();
=> κ²°κ³Όλ λΉμ°ν μμ student.display(); κ²°κ³Όμ κ°μ.
μλ°μ€ν¬λ¦½νΈλ μμ±λ κ°μ²΄μ νλ‘νΌν° λλ λ©μλλ₯Ό μΆκ°, λ³κ²½, μμ κ°λ₯
student.phone="010-1234-5678";//κ°μ²΄μ νλ‘νΌν° μΆκ°
//κ°μ²΄μ μ μ₯λ λ©μλ λ³κ²½ μ²λ¦¬
student.display=function() {
alert("νλ² = "+this.num+", μ΄λ¦ = "+this.name+", μ£Όμ = "+this.address+", μ νλ²νΈ = "+this.phone);
}
student.display();
μμ λ..
//delete(κ°μ²΄μμ) : κ°μ²΄μ μ μ₯λ νλ‘νΌν° λλ λ©μλλ₯Ό μ κ±°νλ ν¨μ
delete(student.phone);//κ°μ²΄μ νλ‘νΌν° μμ
//κ°μ²΄μ μμκ° μλ κ²½μ° [undefined] μλ£νμΌλ‘ μ²λ¦¬
student.display();
+in μ°μ°μ : κ°μ²΄μ νλ‘νΌν° λλ λ©μλκ° μλ κ²½μ° [false]λ₯Ό μ 곡νκ³ κ°μ²΄μ νλ‘νΌν° λλ λ©μλμΈ κ²½μ° [true]λ₯Ό μ 곡
νμ) "μμμ΄λ¦" in κ°μ²΄λ³μλͺ
alert("num" in student);//true
alert("name" in student);//true
alert("phone" in student);//false
for ꡬ문μ μ¬μ©νμ¬ κ°μ²΄μ μμ(νλ‘νΌν° λλ λ©μλ)μ μ΄λ¦μ μ°¨λ‘λλ‘ μ 곡λ°μ λ³μμ μ μ₯νμ¬ μΌκ΄μ²λ¦¬ κ°λ₯
νμ) for(λ³μλͺ in κ°μ²΄λ³μλͺ ) { λͺ λ Ή; λͺ λ Ή; ... }
for(variable in student) {
alert(variable);//=>num,name,addressλ‘ μΆλ ₯λ¨
alert(student.variable);//undefined
λ³μμ μ μ₯λ μμλͺ μΌλ‘ κ°μ²΄μ μμμ μ κ·ΌνκΈ° μν΄ [] μ°μ°μ μ¬μ©
alert(student[variable]); // =>2000, μκΊ½μ , μμΈμ μ’ λ‘ꡬ κ° μ°¨λ‘λλ‘ κ²½κ³ μ°½μ λΈ
}
+with ꡬ문μ μ¬μ©νμ¬ λΈλ λ΄λΆμμ κ°μ²΄μ μμλ₯Ό λ³μμ²λΌ μ¬μ©ν μ μλ κΈ°λ₯ μ 곡
νμ) with(κ°μ²΄λ³μλͺ ) { λͺ λ Ή; λͺ λ Ή; ... }
with(student) {
alert("νλ² = "+num+", μ΄λ¦ = "+name+", μ£Όμ = "+address);
}
=> withꡬ문 μμμλ student.num μ΄λ°μμΌλ‘ μ¬μ©νμ§ μκ³ , λ°λ‘ numλ§ μ¨λ μλμ κ°μ΄ μ€νλ¨