Three.JS 동영상 강좌

웹에서 3차원 그래픽 기능을 개발할 수 있는 자바스크립트 라이브러리인 Three.js에 대한 강좌입니다. Three.js 학습을 계획하고 있다면 이 강좌가 도움이 되리라 확신합니다.














JavaScript의 class에서 private Field, Method 정의

최근 JS의 class에서 private 접근자를 지원한다는 것을 알게 되었습니다. 그전에는 밑줄(_)로 시작하는 필드와 매서드가 private라는 강제성이 없는 방식으로 해왔는데요. 아래는 #width와 #height 필드 그리고 #getArea 매서드가 private 접근자의 성격을 갖습니다.

class Rectangle {
    #width = 10;
    #height = 10;

    constructor(height, width) {
        this.#width = width;
        this.#height = height;
    }

    #getArea() {
        return this.#width * this.#height;
    }

    get area() {
        return this.#getArea();
    }
}

이제 아래의 코드는 에러입니다.

const rec = new Rectangle(10, 10);
console.log(rec.#width);

에러의 내용도 명확히 “Private field ‘#width’ …”라고 되어 있습니다.

그러나 Rectangle에 width라는 필드를 추가할 수 있는데, 이 width는 public입니다. #width와는 별개이구요. 혼란스럽습니다. 게다가 아직 protected 접근자는 제공하지도 않습니다.

웹에서의 객체지향적 프로그래밍을 위해서는 아직까지 TypeScript가 강력한 대안으로 생각됩니다.