반응형
객체 지향 프로그래밍의 특징 4가지
- 캡슐화 : 실제 객체 모습의 추상화를 위하여 데이터와 기능을 모았다.
- 추상화 : 메소드로 예를 들면 내부에 어떤 로직이 있는지 자세히 몰라도 메소드의 이름만 보고도 기능을 짐작할 수 있게하는 것
- 상속 : 자식 클래스에서 부모 클래스의 속성과 메소드를 활용할 수 있다.
- 다향성 : 클래스는 하나더라도 인스턴스는 다양한 다른 키 값을 갖는다.
객체 지향과 자바스크립트
- 자바스크립트는 객체 지향 언어인가? 아니다.
- 자바스크립트는 객체 지향 프로그래밍을 할 수 있는가? 맞다.
- 면접 질문 시 예상 대답 : "자바스크립트는 객체 지향 언어는 아니고 프로토타입 지향 언어라고 들었습니다. 프로토타입에 대해서 깊게 알고 있지는 않지만, 다르다는 점을 알고 있습니다. 자바스크립트에서 객체 지향 프로그래밍을 하려면 class 키워드를 사용해야 합니다."
- 모듈화는 객체 지향으로 코드를 작성하는 그 자체이다.
클래스 생성과 prototype, __proto__
- class 선언 시(클래스 이름을 Human이라고 가정) Human.prototype이 생김
- Human.prototype이라는 객체에는 클래스 생성 시 작성한 constructor와 메소드 정보가 담겨있음
- new 키워드로 daniel 인스턴스를 생성하면 daniel.__proto__를 확인할 수 있음.
- __proto__를 통해서 Human.prototype에 있는 속성과 메소드를 참조할 수 있음.
- 즉 daniel.__proto__ === Human.prototype, Human.prototype.sleep === daniel.sleep(여기서 sleep은 메소드)
반응형