[javascript] 클래스의 멤버 변수와 메소드 정의 규칙 설정하기

자바스크립트에서 클래스를 정의할 때, 멤버 변수와 메소드를 어떻게 정의하고 접근할 수 있는지를 설정하는 규칙을 알아보겠습니다.

멤버 변수 정의하기

클래스의 멤버 변수는 클래스 내에서 사용할 수 있는 변수로, 해당 클래스의 객체에 속하는 속성을 가집니다. 멤버 변수는 보통 클래스의 생성자 내에서 정의되며, this 키워드를 사용하여 클래스 내부에서 접근합니다.

class MyClass {
  constructor() {
    this.myVariable = 10;
  }
}

const myObject = new MyClass();
console.log(myObject.myVariable); // 10

위의 예제에서 MyClass 클래스 내의 myVariable은 멤버 변수로 정의되었습니다. 객체를 생성하고 해당 멤버 변수에 접근하기 위해서는 객체 인스턴스를 사용하여 myObject.myVariable과 같이 접근합니다.

메소드 정의하기

클래스의 메소드는 클래스에 속한 동작을 정의하는 함수입니다. 메소드는 클래스의 프로토타입에 정의되어 모든 객체에서 공유됩니다.

class MyClass {
  constructor() {
    this.myVariable = 10;
  }

  myMethod() {
    console.log('Hello world!');
  }
}

const myObject = new MyClass();
myObject.myMethod(); // Hello world!

위의 예제에서 MyClass 클래스에 myMethod라는 메소드를 정의했습니다. 객체를 생성하고 해당 메소드를 호출하기 위해서는 객체 인스턴스를 사용하여 myObject.myMethod()와 같이 호출합니다.

접근 제어자 설정하기

자바스크립트에서는 멤버 변수와 메소드의 접근을 제어하기 위해 접근 제어자를 사용할 수 없습니다. 모든 멤버는 기본적으로 공개적으로(public) 접근 가능하며, 객체 인스턴스를 통해 접근할 수 있습니다.

class MyClass {
  constructor() {
    this.myVariable = 10;
    this._myPrivateVariable = 20;
  }

  myMethod() {
    console.log('Hello world!');
  }

  _myPrivateMethod() {
    console.log('This is a private method');
  }
}

const myObject = new MyClass();
console.log(myObject.myVariable); // 10
console.log(myObject._myPrivateVariable); // 20
myObject.myMethod(); // Hello world!
myObject._myPrivateMethod(); // This is a private method

위의 예제에서 MyClass 클래스 내에 공개적인 멤버 변수와 메소드를 선언할 수 있으며, _로 시작하는 변수와 메소드는 내부에서만 사용할 수 있는 비공개적인(private) 멤버로 선언할 수 있습니다. 비공개적인 멤버 변수와 메소드에 접근할 수는 있지만, 일반적으로 외부에서 직접적으로 접근하는 것은 지양됩니다.

결론

자바스크립트에서 클래스의 멤버 변수와 메소드를 정의하는 규칙을 알아보았습니다. 멤버 변수는 생성자 내에서 정의되며, this 키워드를 사용하여 접근할 수 있습니다. 메소드는 클래스의 프로토타입에 정의되어 모든 객체에서 공유됩니다. 자바스크립트에서는 접근 제어자를 사용할 수 없으므로, 멤버 변수와 메소드의 접근을 관리하기 위해 네이밍 컨벤션을 사용하는 것이 일반적입니다.