인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

asdqqq님의 프로필 이미지

작성한 질문수

코어 자바스크립트

클래스 (class)

클래스 static 멤버

해결된 질문

작성

·

183

1

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

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

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

답변 1

0

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

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

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

asdqqq님의 프로필 이미지

작성한 질문수

질문하기