클래스는 객체를 생성하기 위한 템플릿
비슷한 성질을 가진 여러개의 객체를 만들기 위해, 일종의 설계도(클래스)를 사용하여 생성한 객체를 인스턴스라고 함
ex)
하나의 모델이 되는 청사진 = 클래스
그 청사진을 바탕으로 한 객체 = 인스턴스
데이터와 기능을 하나의 단위로 묶는 것
캡슐화를 왜 할까요?
가장 중요한 이유는 "정보은닉" 때문
정보은닉이란, 객체에 대한 구체적인 정보를 노출시키지 않도록 하기 위한 기법
추상화의 장점
1. 사용자가 낮은 수준의 코드를 작성하지 않도록 도움.
2. 코드 중복 방지 및 재사용성 향상.
3. 사용자에게 영향을 끼치지 않은 채로 독립적으로 클래스의 내부 구현 변경 가능
4. 중요한 세부 정보만 사용자에게 제공하므로 응용 프로그램 또는 프로그램의 보안 향상에 도움
class ImplementAbstraction {
// method to set values of internal members
set(x, y) {
this.a = x;
this.b = y;
}
display() {
console.log('a = ' + this.a);
console.log('b = ' + this.b);
}
}
const obj = new ImplementAbstraction();
obj.set(10, 20);
obj.display();
// a = 10
// b = 20
모든 객체는 proto 접근자 프로퍼티를 통해 자신의 프로토타입, 즉 [[Prototype]] 내부 슬롯에 간접적으로 접근할 수 있다.
proto 는 접근자 프로퍼티다.
proto 접근자 프로퍼티는 상속을 통해 사용된다.
proto 접근자 프로퍼티를 통해 프로토타입에 접근하는 이유
[[Prototype]] 내부 슬롯의 값, 즉 포로토타입에 접근하기 위해 접근자 프로퍼티를 사용하는 이유는 상호 참조에 의해 프로토타입 체인이 생성되는 것을 방지하기 위해서다.
4. proto 접근자 프로퍼티를 코드 내에서 직접 사용하는 것은 권장하지 않는다.
과제는 없다. 하루종일 챕터를 공부하고 블로깅을 하는 시간을 가졌다. 덕분에 시간이 남아 어제 부족한 코플릿을 해결하였다. 정규 시간에 블로깅을 했기 때문에 한번 더 요약해서 블로깅을 함