Dream🐰ng
article thumbnail

 

ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€


✏️ 클래슀

ν΄λž˜μŠ€λž€?

ν΄λž˜μŠ€λŠ” 속성과 λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 곡간이닀.
속성은 ν΄λž˜μŠ€μ— ν¬ν•¨λ˜λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜κ³ , λ©”μ†Œλ“œλŠ” ν΄λž˜μŠ€μ— ν¬ν•¨λ˜λŠ” ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.

 

클래슀λ₯Ό μ •μ˜ν•˜λŠ” λ°μ—λŠ” 2κ°€μ§€ 방법이 μžˆλ‹€.

  • ν•¨μˆ˜λ‘œ μ •μ˜ (ES5 문법)
function Introduce(name, age, favorite) {
    // μΈμŠ€ν„΄μŠ€ λ§Œλ“€μ–΄μ§ˆ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
}
  • class ν‚€μ›Œλ“œλ‘œ μ •μ˜ (ES6 문법)
class Introduce {
    constructor(name, age, favorite) {
        // μΈμŠ€ν„΄μŠ€κ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
    }
}

μ—¬κΈ°μ„œ constructorλŠ” ν΄λž˜μŠ€κ°€ μΈμŠ€ν„΄μŠ€ 객체λ₯Ό 생성할 λ•Œ 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” λ©”μ†Œλ“œμ΄λ‹€. 

 

constructor λ©”μ†Œλ“œλ₯Ό λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•œλ‹€λ©΄,

class Person {
    constructor() {
        this.name = 'subin';
    }
}

let sujin = new Person();

Person ν΄λž˜μŠ€μ˜ μƒμ„±μž λ©”μ†Œλ“œμ˜ this.name = 'subin'에 μ˜ν•΄ sujin.name의 값은 'subin'으둜 κ³ μ •λ˜λŠ” κ²ƒμœΌλ‘œ μ΄ˆκΈ°ν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€.

 

λ§Œμ•½, constructor λ©”μ†Œλ“œκ°€ μ•„λž˜μ™€ 같이 μ‚¬μš©λ˜λ©΄

class Person {
    constructor(name) {
        this.name = name;
    }
}

let sujin = new Person('sujin');

μ΄λ²ˆμ—λŠ” 첫 번째 μ˜ˆμ‹œμ™€ λ‹€λ₯΄κ²Œ construnctor ν΄λž˜μŠ€ μƒμ„±μžμ— name μ†μ„±μ„ λΆ€μ—¬ν–ˆκΈ° λ•Œλ¬Έμ—, sujin.name은 μΈμŠ€ν„΄μŠ€ 객체λ₯Ό μƒμ„±ν•˜λ©΄μ„œ μ„€μ •ν•œ 속성값 'sujin'이 λœλ‹€.

 

✏️ μΈμŠ€ν„΄μŠ€

μΈμŠ€ν„΄μŠ€λž€?

μΈμŠ€ν„΄μŠ€
λŠ” ν΄λž˜μŠ€μ—μ„œ μ •μ˜λœ 정보듀을 가져와 μ΄μš©ν•˜λŠ” 객체이닀.

 

μΈμŠ€ν„΄μŠ€λŠ” 생성할 λ•Œ new ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•œλ‹€.

let myself = new Introduce('subin', 28, 'apeach');

IntroduceλΌλŠ” 클래슀λ₯Ό λ§Œλ“€μ—ˆλ‹€κ³  κ°€μ •ν•˜κ³ , myselfλΌλŠ” μΈμŠ€ν„΄μŠ€ 객체λ₯Ό λ§Œλ“€κ³ μž ν•œλ‹€λ©΄ Introduce ν΄λž˜μŠ€ λͺ… μ•žμ— newλΌλŠ” ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬ let myself = new Introduce();의 ν˜•νƒœλ‘œ μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

μ†μ„±μž λ©”μ†Œλ“œμ— μ •μ˜λœ 속성이 μ‘΄μž¬ν•œλ‹€λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ 속성 정보λ₯Ό ν•¨κ»˜ μž…λ ₯ν•œλ‹€.

 

✏️ 클래슀의 ES5와 ES6 문법 차이

μœ„μ—μ„œ 클래슀λ₯Ό μ •μ˜ν•˜λŠ”λ° 2κ°€μ§€ 방법이 μžˆλ‹€κ³  ν•˜μ˜€λŠ”λ°, 클래슀 내에 λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•  λ•Œ 더 차이λ₯Ό λ‘λ“œλŸ¬μ§€κ²Œ 보여쀀닀.

 

  • ES5 문법
function Introduce(name, age, favorite) {
    this.name = name;
    this.age = age;
    this.favorite = favorite;
}

Introduce.prototype.study = function() {
    // κ³΅λΆ€ν•˜λŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
}

Introduce.prototype.game = function() {
    // κ²Œμž„ν•˜λŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
}

Introduce.prototype.sleep = function() {
    // μž μžλŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
}

 

μœ„μ˜ μ½”λ“œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄ ν•¨μˆ˜λ‘œ μ •μ˜ν•œ Introduce ν΄λž˜μŠ€ λ‚΄μ—μ„œλŠ” 속성에 λŒ€ν•œ μ΄ˆκΈ°ν™”λ§Œ ν•΄μ£Όκ³ , κ·Έ μ™Έ λ©”μ†Œλ“œλŠ” μ „λΆ€ ν•¨μˆ˜ λ°”κΉ₯μ—μ„œ prototype ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ •μ˜ν•΄μ€€λ‹€.

  • ES6 문법
class Introduce {
    constructor(name, age, favorite) {
        this.name = name;
        this.age = age;
        this.favorite = favorite;
    }
    study() {
        // κ³΅λΆ€ν•˜λŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
    }

    game() {
        // κ²Œμž„ν•˜λŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
    }

    sleep() {
        // μž μžλŠ” μ‹œκ°„μ„ μ•Œλ €μ£ΌλŠ” μ½”λ“œ
    }
}

λ°˜λ©΄μ— ES6 λ¬Έλ²•μ—μ„œλŠ” Introduce ν΄λž˜μŠ€ 내에 constructor λ©”μ†Œλ“œμ™€ ν•¨κ»˜ λ¬Άμ–΄μ„œ λ‹€λ₯Έ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜λŠ” λͺ¨μŠ΅μ„ λ³Ό 수 μžˆλ‹€.

profile

Dream🐰ng

@shoupeach

🐰 Happy new rabbit! 🐰

profile on loading

Loading...