0823 TIL prototype

냐하호후·2021년 8월 23일
0

TIL

목록 보기
29/101

section2의 시작이다!

🙆‍♀️ 클래스와 인스턴스라는 용어를 이해할 수 있다.

하나의 모델이 되는 청사진 객체 = class
클래스를 바탕으로 한 객체 = instance

🙆‍♀️ new 키워드의 사용법을 이해할 수 있다. instance를 만들때 사용한다.

🙆‍♀️ class 키워드의 사용법을 이해할 수 있다.

🙆‍♀️ 현실 세계의 모델을 바탕으로 클래스의 메소드와 속성을 디자인할 수 있다.

🙆‍♀️ 객체 지향 프로그래밍 특징을 이해할 수 있다.

캡슐화
데이터와 기능을 하나의 단위로 묶는것
은닉을해서 내부 데이터나 구현을 외부로 노출시키지 않음
느슨한 결합으로 언제든 구현의 수정이 가능하다

상속
부모 클래스의 특징을 자식 클래스가 물려받는 것

추상화
실제로 노출되는 부분은 단순하다. 유저가 요구하지 않는 메소드는 노출시키지 않는다.

다형성
같은 메소드여도 다양한 방식으로 구현될 수 있다.

🙆‍♀️ JavaScript에서 객체 지향 프로그래밍을 구현할 수 있다.

객체지향 프로그램(다른 언어들)은 객체에 있는 메소드를 직접 참조하지만 자바스크립트는 prototype 자체를 참조한다.

🙆‍♀️ Prototype이 무엇인지 이해할 수 있다.

객체를 상속하기 위해서 사용하는 방식으로 원형 객체를 의미한다. 모든 객체들이 메소드와 속성들을 상속받기 위해서 프로토타입 객체를 가진다.

prototype의 의미(인스턴스의 원형이 되는 객체)
인스턴트의 속성이 자신에게 없으면 부모의 부모까지 찾아올라간다.

🙆‍♀️ 클래스 상속의 원리를 이해할 수 있다.

상속을 받으면 부모 클래스의 메소드를 사용할 수 있다.
class라는 것이 엄밀하게 말하면 javascript에 존재하지않는다. 그 객체에가서 직접 메소드를 꺼내는 것이아니다. 함수를 만들면 prototype도 같이 생긴다.
부모클래스의 메소드를 직접 가져오는게 아니라 프로토타입의 메소드를 가져오는 것이다.
constructor 생성자함수의 parameter자리에 속성들을 적어준다.

🙆‍♀️ Prototype chain을 이해하고 설명할 수 있다. (__proto__)

객체의 어떤 속성에 접근하려할 때 그 객체 자체의 속성 뿐만 아니라 객체의 프로토타입, 그 프로토타입의 프로토타입 등 프로토타입 체인의 종단에 이를 때까지 그 속성을 탐색한다.

클래스 Person을 만들면 객체가 생성이된다. Person객체를 만들때 Person의 prototype객체도 같이생겨서 2개의 객체가 생긴다. Person객체에는 prototype이라는 속성이 생기고 그것은 Person의 prototype객체를 가리킨다.
Person의 prototype객체도 constructor라는 속성을 만들고 constructor는 Person을 가리킨다. 서로 상호 참조를 한다.

new를 사용해서 변수 kim에 클래스 Person의 인스턴스를 할당해준다. 그러면 kim객체에 __proto__라는 속성이 생성된다. __proto__는 Person의 prototype객체를 참조한다.

🙆‍♀️ 캡슐화와 추상화의 차이는?

캡슐화 : 안의 메소드나 변수의 은닉 (개발자의 관점)
추상화 : 안은 복잡하나 겉에 보이는 것은 간단하다 (사용자의 관점)

🙆‍♀️ 인터페이스(Interface)란 무엇일까요?

클래스 정의 시, 메소드와 속성만 정의한 것을 인터페이스라고 부른다. 이것이 추상화의 본질이다.

constructor()안엔 모든 속성을 작성해주고
super()안엔 상속받을 것만 작성한다.

new 키워드 사용시의 this의 의미 = this는 생성자함수 constructor가 생성할 객체 instance 그 자체이다.

profile
DONE is better than PERFECT

0개의 댓글

관련 채용 정보