자바스크립트 클래스의 인스턴스 메서드와 정적 메서드를 구분하는 방법은 무엇인가요?

인스턴스 메서드는 클래스의 인스턴스를 통해 호출되는 메서드입니다. 이 메서드들은 클래스의 프로퍼티와 상태에 접근하여 작업을 수행하며, 특정 인스턴스에만 영향을 미칩니다. 인스턴스 메서드를 정의할 때는 클래스의 프로토타입에 메서드를 추가하는 방식으로 구현합니다.

예를 들어, 다음은 Person 클래스에 인스턴스 메서드인 sayHello를 정의하는 예시입니다:

class Person {
  constructor(name) {
    this.name = name;
  }

  sayHello() {
    console.log(`안녕하세요, 저는 ${this.name}입니다.`);
  }
}

const person = new Person("John");
person.sayHello(); // 출력: 안녕하세요, 저는 John입니다.

반면에, 정적 메서드는 클래스 자체에 속한 메서드로서 특정 인스턴스와 무관하게 호출됩니다. 주로 유틸리티 함수 등을 정의하는 데 사용되며, 클래스의 특정 인스턴스와 연결되지 않는 작업을 수행합니다. 정적 메서드를 정의할 때는 클래스 자체에 직접 메서드를 추가하는 방식으로 구현합니다.

다음은 Math 클래스에 정적 메서드인 sqrt를 정의하는 예시입니다:

class Math {
  static sqrt(number) {
    return Math.pow(number, 0.5);
  }
}

console.log(Math.sqrt(4)); // 출력: 2

따라서 인스턴스 메서드는 클래스의 인스턴스를 통해 호출되고 해당 인스턴스에 대한 작업을 수행하며, 정적 메서드는 클래스 자체에 직접 호출되고 클래스와 연관된 작업을 수행합니다.