λͺ©μ°¨
1. μ£Όμ μ μ μ΄μ
2. μμ
- 2-1. μμμ μ μ λ° μ’
λ₯
- 2-2. νλ‘ν νμ
κ³Ό μμμ κ΄κ³
- 2-3. ν΄λμ€μ μμμ κ΄κ³
3. μμ½ μ 리 λ° λ©΄μ ν QnA
λ²μΈ. λ³λμ ITμ©μ΄
1. μ£Όμ μ μ μ΄μ
μ½λ©μ νλ€λ³΄λ©΄, μ’
μ’
μμμ΄λΌλ μ©μ΄λ₯Ό λ§μ΄ λ€μ΄λ΄€μ κ²μ΄λ€. λ¬Όλ‘ , μμμ μ¬μ μ μΈ κ°λ
μΈ 'νμμ‘΄μ¬κ° μμμ‘΄μ¬λ‘λΆν° 무μΈκ°λ₯Ό λ¬Όλ¦Όλ°λλ€.' λ κ² μ λλ μ μΆν μ μμ κ²μ΄λ€.
νμ§λ§, μ½λ©μ΄λ ITμ
κ³μμ μΈκΈνλ μμμ λν΄ μ λλ‘ μκ³ λμ΄κ°λ κ²μ΄ μ€μ λ‘ νλ‘μ νΈμ μ μ©ν λ, λ³΄λ€ μμνκ³ μ΅μνκ² μ¬μ©ν μ μμ κ²μ΄κΈ°μ μ μ νλ€.
2. μμ
2-1. μμμ μ μ λ° μ’
λ₯
- μλ°μ€ν¬λ¦½νΈμμ μ¬μ©λλ μμμ νλ‘ν νμ
μμκ³Ό ν΄λμ€ μμ ν¬κ² λ κ°μ§λ‘ λλλ€.
- νλ‘ν νμ
μμ : μμμ λ°λ κ°μ²΄κ° μμμ ν΄μ£Όλ κ°μ²΄μ νλ‘νΌν°λ λ©μλλ₯Ό μΆκ°λ‘ μ¬μ©ν μ μκ² ν΄μ£Όλ 체κ³λ₯Ό μλ―Ένλ€.
- ν΄λμ€ μμ : κΈ°μ‘΄μ ν΄λμ€λ₯Ό νμ₯μν€λ κ°λ
μΌλ‘ μ΄ν΄νλ©΄ μ’λ€. μμλ°μ κΈ°μ‘΄μ ν΄λμ€λ₯Ό ν λλ‘ μλ‘μ΄ κΈ°λ₯μ μΆκ°νλ μμ€ν
μ μλ―Ένλ€.
2-2. νλ‘ν νμ
κ³Ό μμμ κ΄κ³
- νλ‘ν νμ
(κ°μ²΄) : λ€λ₯Έ κ°μ²΄μ λν μ°Έμ‘° νλ λμμ μλ―Ένλ€. λͺ¨λ κ°μ²΄λ [[prototype]]μ΄λΌλ λ΄λΆ νλ‘νΌν°λ₯Ό κ°λλ€.
- [[prototype]]λ₯Ό μ μ₯μ°½κ³ λΌκ³ μ΄ν΄λ©΄ μ’λ€.
μλ₯Ό λ€μ΄, μλμ κ²½μ°, μ λΆ κ°μ²΄λ‘ μ΄λ£¨μ΄μ ΈμκΈ°μ κ°μ²΄μ νλ‘ν νμ
μ, [[prototype]] : Object μ¦, Object.prototypeμ΄λ€.κ·Έλ¦¬κ³ μμλ°λ κ°μ²΄λ€μ΄ [[prototype]]μμΌλ‘ λ€μ΄κ°λ€.
__proto__
: κ°μ²΄κ° μμ μ νλ‘ν νμ
μ μ κ·Όνλλ‘ ν΄μ£Όλ μ κ·Όμ νλ‘νΌν°μ΄λ€. μΌμ’
μ λ€λ¦¬(bridge)λΌκ³ μ΄ν΄νλ©΄ μ’μ λ―νλ€.
ν΄λΉ νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ μμλ°μ κ°μ²΄κ° μμ μ νλ‘ν νμ
μ λ€μ΄κ° μ μλλ‘ μ°κ²°ν΄μ€λ€.
- μ¦,
__proto__
λ₯Ό μ¬μ©νμ¬ μμ(λΆλͺ¨) κ°μ²΄κ° νμ(μμ) κ°μ²΄μ νλ‘ν νμ
μ μΆκ°λλ κ³Όμ μ μμμ΄λΌκ³ νλ€.
Q. κ·Έλ°λ° μ νλ‘ν νμ
μμμ νλ κ²μΈκ°μ??
- μ°μ μ ν μ¬λ‘λ₯Ό ν΅ν΄ μ΄ν΄λ³΄μ
- μ μμμ κ²½μ°, foodλ₯Ό μμλ°μ pasta κ°μ²΄κ° cookμ΄λΌλ λ©μλλ₯Ό μμ λ‘κ² μ¬μ©ν μ μλ μ¬λ‘μ΄λ€.
μ¦, pasta κ°μ²΄μμ cookλ©μλλ₯Ό λ λ§λ€μ§ μκ³ μμλ°μ νΈνκ² μ¬μ©ν μ μλ€λ κ²μ μλ―Ένλ€.
μ΄λ 곧, μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , κ΄λ¦¬λ₯Ό μ©μ΄νκ² ν΄μ€λ€λ μ₯μ μ κ°κ³ μλ€.
2-3. ν΄λμ€μ μμμ κ΄κ³
- ν΄λμ€(class) : νλμ μμ±μ ν¨μλ₯Ό μ¬λ¬κ° μ°μ΄λΌ μ μκ² ν΄μ£Όλ λ¬Έλ²μΌλ‘ νν λΆμ΄λΉ΅ νμ λΉμ νλ€.
- λ¨Όμ μμμ ν λΆλͺ¨ ν΄λμ€λ₯Ό μμ±νλ€.
class Food {
constructor (name) {
this.name = name;
this.won = 0;
}
price(won) {
this.won = won;
console.log(`${this.name}μ κ°κ²©μ ${this.won}μ μ
λλ€.`)
}
pay(){
console.log(`${this.won}μμ μ§λΆνμ
¨μ΅λλ€.`)
}
}
const food = new Food("μμ");
- extends : μ΄λ₯Ό μμλ°μ μμ ν΄λμ€λ₯Ό μμ±ν λ, μμ ν΄λμ€λͺ
μμ μμ±νλ€.
class Pasta extends Food {
tasty(){
console.log(`${this.name} λ§μλ€μ!`)
}
}
const pasta = new Pasta("μλΌλΉλ° νμ€ν");
class Food {
constructor (name) {
this.name = name;
this.won = 0;
}
price(won) {
this.won = won;
console.log(`${this.name}μ κ°κ²©μ ${this.won}μ μ
λλ€.`)
}
pay(){
console.log(`${this.won}μμ μ§λΆνμ
¨μ΅λλ€.`)
}
}
const food = new Food("μμ");
class Pasta extends Food {
tasty(){
console.log(`${this.name} λ§μλ€μ!`)
}
}
const pasta = new Pasta("μλΌλΉλ° νμ€ν");
- pastaν΄λμ€λ food ν΄λμ€λ₯Ό μμλ°κ³ μλ€λ κ²μ μλ―Ένλ€. κ·Έλ κΈ°μ foodν΄λμ€μ λ©μλλ₯Ό μ¬μ©ν μ μλ€.
pasta.price(12000;
pasta.pay(12000);
pasta.tasty();
Q. κ·Έλ°λ° μ ν΄λμ€ μμμ νλ κ²μΈκ°μ??
- νλ‘ν νμ
μ μμμ νλ μ΄μ μ μ μ¬νκ², μμμ μ£Όκ³ λ°κΈ°μ, μμ±ν΄μΌν μ½λμ μμ΄ μ€μ΄λ λ€. νΉν, ν΄λμ€μ κ²½μ°, μμ±μ λ©μλλ± μμ±ν΄μΌν λ΄μ©μ΄ λ§κΈ°μ, μμμ μ₯μ μ΄ λμ± λΆκ°λλ€.
- μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , κ΄λ¦¬λ₯Ό μ©μ΄νκ² ν΄μ€λ€λ μ₯μ μ΄ μκΈ° λλ¬Έμ μ¬μ©νλ€.
3. μμ½ μ 리 λ° λ©΄μ ν QnA
QnA : μλ°μ€ν¬λ¦½νΈμμ μ¬μ©νλ μμμ 무μμ΄κ³ , κ·Έ κΈ°λ₯μ΄ λ¬΄μμΈκ°μ??
- μμμ μμλ°λ μμμμκ° μμν΄μ£Όλ λΆλͺ¨μμμ νλ‘νΌν°λ λ©μλλ₯Ό μΆκ°λ‘ μ¬μ©ν μ μλλ‘ νμ₯ν΄μ£Όλ κΈ°λ₯μ
λλ€.
- μλ°μ€ν¬λ¦½νΈμ κ²½μ°, νλ‘ν νμ
μμ, ν΄λμ€ μμ, μ΄λ κ² λ κ°μ§ μ νμ μμμ΄ μμ΅λλ€.
- νλ‘ν νμ
μ μμμ, κ°μ²΄ μμ [[prototype]]λΌλ λ΄λΆ νλ‘νΌν°μμ
__proto__
λΌλ μ κ·Όμ νλ‘νΌν°λ‘ κ°μ²΄λ€μ μμλ°μ μ μ₯νμ¬ μ¬μ©ν©λλ€.
- ν΄λμ€ μμμ, λΆλͺ¨ ν΄λμ€λ₯Ό extendsλΌλ ν€μλλ₯Ό μ¬μ©νμ¬ μμ ν΄λμ€κ° μμλ°μ μ¬μ©ν©λλ€.
- μμμ μ¬μ©νλ μ΄μ λ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , μ μ§λ³΄μκ° νμν κ²½μ°, νΉμ λΆλΆλ§ μμ ν΄λ λκΈ°μ κ΄λ¦¬λ₯Ό μ©μ΄νλ€λ μ₯μ μ΄ μκΈ° λλ¬Έμ
λλ€.