[Javasciprt] (ES6) Class μ„€κ³„ν•˜κΈ°

μžλ°”λ‘œ 클래슀λ₯Ό μ„€κ³„ν•˜λŠ” 일은 λ§Žμ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ 클래슀 μ„€κ³„λŠ” 자주 μ•ˆ ν•˜κ²Œ λœλ‹€.

κ·ΈλŸ¬λ‚˜ ES6λ‘œμ˜€λ©΄μ„œ 클래슀 섀계가 μ’€ 더 κ°€λ…μ„±μžˆκ³  λͺ…ν™•ν•΄μ‘Œλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ λ˜ν•œ κ°•λ ₯ν•œ 객체 지ν–₯ν˜• 언어이기 λ•Œλ¬Έμ— 클래슀 μ„€κ³„ν•˜μ—¬ μ‚¬μš©ν•˜κ²Œ 되면 쑰금 더 λ‚˜μ€ μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

κ°„λ‹¨ν•˜κ²Œ λ‚ μ§œ 클래슀λ₯Ό λ§Œλ“€μ–΄μ„œ 클래슀의 기본인 μƒμ„±μž, Getter, Setter, Method, Static 등을 μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² λ‹€.

date.js

class Date {
  // μƒμ„±μž
  constructor(year, month, day) {
    this.year = year;
    this.month = month;
    this.day = day;
  }

  // Getter, SetterλŠ” λ³€μˆ˜ μ ‘κ·Όκ³Ό 같은 λ°©μ‹μœΌλ‘œ μ‚¬μš©λœλ‹€.
  // Getter λ©”μ†Œλ“œ
  get getYear() {
    return this.year;
  }

  // Setter λ©”μ†Œλ“œ
  set setYear(year) {
    this.year = year;
  }

  // λ©”μ†Œλ“œ
  getDate() {
    return `${this.year}-${this.month}-${this.day}`;
  }

  // Static λ©”μ†Œλ“œ
  static staticMethod() {
    return 'Static Method';
  }
}

// 객체 생성
const date = new Date('2019', '12', '05');

// λ©”μ†Œλ“œ 호좜
console.log(date.getDate()); // 2019-12-05

// Setter 호좜
date.year = '2018';

// Getter 호좜
console.log(date.year); // 2018

// λ©”μ†Œλ“œ 호좜
console.log(date.getDate()); // 2018-12-05

// Static λ©”μ†Œλ“œ 호좜
console.log(Date.staticMethod()); // Static Method

이와 같이 κ°„λ‹¨ν•˜κ²Œ 클래슀 섀계λ₯Ό ν•΄λ³΄μ•˜μ§€λ§Œ 클래슀 섀계에 ν•„μš”ν•œ λŒ€λΆ€λΆ„μ˜ κΈ°λŠ₯은 κ΅¬ν˜„ν•  수 μžˆλ‹€.

μ—¬κΈ°μ„  κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ 상속 클래슀 λ˜ν•œ κ΅¬ν˜„ν•  수 μžˆλ‹€.

λ‹€λ₯Έ κΈ€ 읽어보기 ⬇️