You don't know JS Part. 2
권기웅
2018. 09. 15
클래스 기반 디자인 설계
클래스 기반 디자인 설계
1. 클래스 같은 추상화 체계 없다 (아무튼 없음)
2. 눈을 씻고 찾아봐도 없다 (진짜 없음)
3. 그냥 객체를 다른 객체에 연결할 뿐
자연의 법칙을 거스르면 앞으로의 인생은 언제나 항상 가시밭길이 펼쳐질 것이다 (저자 인성 ㄷㄷ)
[[Prototype]]
setID
outputID
[[Prototype]]
setID
outputID
[[Prototype]]
...
...
Object
객체와 객체를 서로 연결하고,
필요할 때 공통 객체에 작동을 위임
(Object Linked to Other Objects)
1. 상태 값은 위임하는 쪽에 두고 위임 받는 쪽에는 두지 않는다
2. 오버라이드를 하지 않는다 (레퍼런스가 모호해진다)
3. 상세한 작동을 명시하는 메서드명을 사용한다
4. this 바인딩을 이용한 prototype chaining을 구현한다
1. 위임 동작은 내부 구현으로 숨기고,
API 에는 노출 하지 않는다 (XYZ.setID는 내부로 숨기자)
2. 부모 > 자식이 아니라, 모든 객체는 수평적이다
3. 수평으로 나열된 상태에서 객체간의 위임링크만이 있다
만약 상호간 링크가 체결된 상태에서
B, A 모두 존재하지 않는 프로퍼티 / 메서드를 참조한다면?
자바스크립트 엔진 구현에서는
무한 루프 참조 확인이 더 성능 요건에 부합하기 때문에
상호 위임은 안댐!
내부 생성자명 추적 기능의 구현이 브라우저 간의 차이가 있음
OLOO 스타일 코딩에서는 생성자 안쓰니까 상관없음 😎
자세한 내용은 코드로...
생성자, 프로토타입, new, 명시적 this 바인딩...
Object.create()
ES6 class를 써보자!
트랜스파일한거 보기
1. 자주 사용하는 자료형인 Object와 Property로 구성되고
2. 어려운 super의 의사구현을 피함
3. Widget 은 공통 유틸리티 객체 역할
4. Widget 형태의 다른 UI는 Widget이 필요하다면, 링크를 맺으면 됨!
1. 자주 사용하는 자료형인 Object와 Property로 구성되고
2. 어려운 super의 의사구현을 피함
3. Widget 은 공통 유틸리티 객체 역할
4. Widget 형태의 다른 UI는 Widget이 필요하다면, 링크를 맺으면 됨!
Controller
LoginController
AuthController
[[Prototype]]
getUser
getPassword
[[Prototype]]
...
...
Object
LoginController
AuthController