[자바스크립트] 5. 클래스

김학재·2021년 1월 22일
0

자바스크립트

목록 보기
6/17
post-thumbnail

1. 선언

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    speak() {
        console.log(`${this.name} : hello!`);
    }
}

const kim = new Person('kim', 26);
console.log(kim.name); // kim
console.log(kim.age); // 26
kim.speak(); // kim : hello!

2. Getter, Setter

getter : 프로퍼티를 읽으려고 할 때 실행
setter : 프로퍼티에 값을 할당할 때 실행

class User {
    constructor(firstName, lastName, age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
    get age() {
        return this._age;
    }
    set age(value) {
        this._age = value < 0 ? 0 : value;
    }
}

즉, this.agegetter를 실행하고, = agesetter를 실행한다.
stackoverflow - Why does my javascript getter/setter require underscores?

_를 사용해 프로퍼티에 접근하고, getter를 호출하고, 다시 프로퍼티에 접근하고.... 루프 문제를 해결한다.

3. Public, Private

class Experiment {
    publicField = 2;
    #privateField = 0;
}

4. Static

class 자체에 할당됨. object에 상관없이 공통적으로 사용 가능
static을 통해 어떤 클래스의 변수, 메소드 등에 접근을 통해 메모리 효율 관리가 가능하다.

class Article {
    static publisher = 'abcd';
    constructor(articleNumber) {
        this.articleNumber = articleNumber;
    }
    static printPublisher() {
        console.log(Article.publisher);
    }
}
const article1 = new Article(1);
console.log(article1.publisher); // undefined
console.log(Article.publisher); // abcd
Article.printPublisher(); // abcd

5. 상속

extends를 사용, 부모 클래스의 속성, 메소드를 상속받음.
오버라이딩을 통해 재정의 가능
부모의 속성, 메소드 호출 시 super 키워드 사용

instanceOf

class checking

profile
YOU ARE BREATHTAKING

0개의 댓글