-
OOP in JavaScript (2)기타 2020. 12. 9. 16:31반응형
이번에는 클래스에 대해서 좀더 자세하게 적어보자
휴먼을 상속할때 call 을 이용하여 this 값을 재지정 해주었다.
휴먼을 상속한 폴리스 아주 잘 상속이 되었다 메서드역시 잘상속된걸 확인 할수잇다.
그러나 저렇게 메서드가 매번 생성 되는 거보다는 생성자의 프로토타입에 저장해서 필요할때만 꺼내쓰는것이 유용 하다
메서드를 함수안이 안이라 밖에서 프로토 타입에 저장하자 메서드는 상속이 안되있는것을 확인할수있다.
이번에는 메서드가 함수자체에 말고 함수의 프로토 타입에 있으니까 그것을 참조하도록 수정해보겟다.
police.prototype 이 복제된 Human.property 를 가리키는 것을 볼수 있다. 여기서 복제하지 않고 그냥넣게 되면 이후 상속받은걸 수정하면 상속해준거 까지 바뀌게 된다 (참조형데이터라) 그래서 Object.create메서드를 이용해 복제 한다.
Object.create() 메서드는 지정된 프로토타입 객체 및 속성(property)을 갖는 새 객체를 만듭니다.
그러나 이렇게 까지만 해놓으면 constructor 가 police 가 아닌 휴먼을 가리키니까 constructor 를 재지정해줘야 하는 번거로움이 있다.
이번에는 클래스를 써보자
클래스의 경우 extends 키워드를 이용해 간편하게 상속할수 있다.
constructor 부분을 쓰지않아도 상속대상의 constructor 부분은 자동으로 실행이 된다 하지만 따로 추가하고 싶은 경우 컨스트럭터 함수내에 super키워드에 인자들을 넘겨주어야 하며 이후에 추가해주면 된다.
함수 역시 동일한 메서드 이름의 경우 덮어씨워 지는것이 기본이고 관계없이 실행되게 하려면 역시 super키워드를 이용해 접근할수 있다.
'기타' 카테고리의 다른 글
익숙하지않은메서드 (0) 2020.12.17 시간복잡도 (0) 2020.12.17 OOP in JavaScript (1) (0) 2020.12.09 자료구조 를 마치며 (0) 2020.12.08 data structure link (0) 2020.12.07