• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

클래스 static 멤버

23.11.20 14:22 작성 조회수 77

0

안녕하세요!
클래스 static 멤버 관련해서 질문드립니다.

이전 프로토타입 강의에서 객체의 프로토타입에는 모든 데이터 타입에 적용될 수 있기 때문에 객체 전용 메서드를 정의할 수 없어서 예외적으로 객체 생성자 함수에 정의하였다는 것은 이해했습니다. 그런데, 배열의 경우는 왜 프로토타입에 메서드를 정의하고 배열 생성자 함수에 static methods와 static properties를 정의한건지 궁금합니다!

항상 좋은 강의 감사드립니다!

답변 1

답변을 작성해보세요.

0

Object의 경우와 달리 배열 클래스의 static 멤버는 말그대로 'static'한 목적을 지닌 경우에 해당한다고 볼 수 있습니다.
예컨대 Array.isArray 메서드의 경우, 인자로 임의의 타입의 데이터를 넘기면 해당 인자가 배열인지 여부를 판단하여 true / false를 반환합니다. 이런 메서드를 배열의 prototype에 지정하는 건 의미가 없겠죠. 이미 배열인데 굳이 배열인지 아닌지를 판단할 이유가 없으니까요.

즉 인스턴스 자체가 '주체'가 되는게 합리적일 때는 prototype 메서드로 지정하지만, 인스턴스에 종속되는 것보다 클래스 자체를 주체로 삼는 것이 보다 합리적인 경우에는 static 메서드로 지정하는 것입니다.