본문 바로가기
  • Seizure But Okay Developer
FrontEnd/CodeSpitz 강의 정리

코드스피츠 5주차 수업 정리2

by Sky_Developer 2019. 3. 18.

생성자가 extend 하지 않은 것들은 다 주 생성자가 됨.


class NormalItem extends Item {...


에선 NormalItem이 부 생성자가 됨. Javascript는 주 생성자의 인스턴스가 부 생성자를 체이닝 시켜주는 식.


javascript 언어에선 this 를 데이터 형식으로 넘겨줄 수 있기 때문에 부모 자식 상속 관계에서도


부모로 부터 시작해 자식에게 내려갈 때 데이터를 하나씩 추가해가는 식으로 할 수 있다.


ex) Function을 상속받으면 내 인스턴스는 Function. Date을 상속받으면 내 인스턴스는 Date (Object를 상속받은게 아님)


Function과 Arrow 함수의 차이


Function : 


- Function만의 this가 생성됨(this 는 메소드이기 때문에 통용된다 -> ES6 부턴 prototype 방식으로 메소드를 만들면 안되므로 Function으로 this가 들어올 일은 없음.

클래스의 메소드 구문으로 만들 것이기 때문)

- argument 객체가 생성(Rest 인자로 대체 가능)


=> 따라서 Function을 쓸 일은 없다 (ES6 세계에선 Function이란 키워드 자체를 사용하면 안됨, Function은 하위 호환성을 위해서 있는 키워드

강사님 코드를 보면 arrow 함수 또는 클래스의 메소드 만 사용함)


modern 코드에선 arrow와 클래스 구문을 이용한 메소드 밖에 없음.


되도록 이면 부모형을 받아야 후에 그 자리를 다양한 자식들이 와서 메꿔줄 수 있음.

그러므로 되도록이면 부모형을 받고 나중에 자식형을 확장해 나아가는 구조를 사용해야 함.


객체지향에선 Polymorphism을 통하여 추상형으로 받으려고 한다. 왜 보다 구체적인 구상형을 쓰지 않고 제약적이고 어려운 추상형을 받으려고 할까?

=> 다양한 알고리즘이 와도 기존에 있던 구조는 동작을 한다.

특정 메소드는 자신의 내부 코드가 동작되어야 할 책임이 있는데 미래에 어떤 형식의 데이터가 와도 동작하며

특정타입에 의존하지 않고 보다 넓은 타입들에 의존하는 알고리즘. 공통적으로 적용할 수 있는 알고리즘으로 구성되야 함.

=> 일반화 된 알고리즘을 짜야지만 알고리즘이 순수하게 하는 일을 파악할 수 있기 때문. (제네릭 프로그래밍)

일반적으로 알려진 것은 제네릭 타입이지만 제네릭 하게 만들 수 있는 건 타입 뿐만 아니라 알고리즘 그외에 것들도 모두 제네릭하게 만들 수 있음.

제네릭한 알고리즘을 도출하기 위해서 더 추상적인 형을 받는 것임.


형태를 구체적으로 정하려 할수록 협의적으로 구성됨. 제약조건(if 문과 같은 조건문)이 들어가면서 코드가 지저분해짐

자식들이 해결해야하는 공통적인 문제(중복코드)는 자식들한테 남아있는 대신에 부모(메서드)로 빼놓는게 중복을 방지할 수 있음.

이러한 이유로 추상형을 지향하는 것임.


자식마다 따로 처리할 로직은 '자식'에

자식마다 공통적으로 처리할 로직은 '부모'에.



댓글