강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

asdqqq님의 프로필 이미지
asdqqq

작성한 질문수

코어 자바스크립트

클래스 (class)

클래스 static 멤버

해결된 질문

작성

·

226

1

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

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

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

답변 1

0

정재남님의 프로필 이미지
정재남
지식공유자

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

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

asdqqq님의 프로필 이미지
asdqqq

작성한 질문수

질문하기