웹에서 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가 강력한 대안으로 생각됩니다.