클래스 기반 언어와 프로토 타입 기반 언어(Class-based vs. prototype-based languages)
Java 및 C ++와 같은 클래스 기반 객체 지향 언어는 클래스와 인스턴스라는 두 개의 별개의 엔티티 개념을 기반으로합니다.
클래스는 객체의 특정을 결정짓는 모든 속성들의 집합이다.(java의 메소드와 필드)
인스턴스는 클래스의 인스턴스이다.
아래의 소스를 보면 Animal은 클래스 이고 dog는 Animal의 인스턴스이다.
1 |
|
JavaScript와 같은 프로토 타입 언어는 위에서 처럼 클래스와 인스턴스를 구분짓지 않습니다.
또 상속을 프로토타입 복제를 통해서 구현 하고 있습니다.
Douglas Crockford가 한 말 입니다.
프로토 타입을 만들고 객체를 생성 합니다. JavaScript에서는 객체를 변경할수있으니 인자에 새로운 인스턴스와 메소드를 제공하여 객체를 보강할수도 있다.
심지어 새로 보강된 객체가 새로운 프로토타입이 될수도 있다. 객체가 객체를 상속 받는데 어떤것이 더 객체지향이냐?
위에 내용을 이해하기 위해서 다음 포스트에서 자바스크립트에 상속에 대해서 설명하겠습니다.
1 |
|