class
하나의 모델이 되는 청사진(blue print)를 만든다.
instance
청사진을 바탕으로 한 객체(instance 객체)를 만드는 프로그래밍 패턴
instance 를 만들때는 new 키워드를 사용한다.
은닉화를 안할 시 원하지 않은 함수를 호출할 수 있기에 은익을 해야하며, 외부에서 접근하여 변경되게 만들어 서는 안된다.
내부 구현은 아주 복합한데, 실제로 노출되는 부분은 단순하게 만드는 개념
추상화를 통하여 인터페이스가 단순해지며, 많은 기능들이 노출되지 않기 때문에 예기지 못한 사용상의 변화가 일어나지 않도록 만들수 있다.
추상화, 캡술화의 차이
캡슐화가 코드나 데이터의 은익에 포커스가 맞춰져 있다면,
추상화는 class를 사용하는 사람이 필요하지 않은 메소드 등을 노출 시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
추상화의 본질 : class 정의시 메소드와 속성만 정의한 것을 interface라고 부른다.
Polymorphism에서 poly 많은, morph 형태 라는 뜻과 같이 다양한 형태를 말한다.
객체에서 똑같은 메소드라 하더라도, 다른 방식으로 구현될 수 있다.
예를 들어 부모 class에 하나의 메소드를 만들어 자식 class에서 동작을 한다고 하자
같은 동작의 메소드이지만 각 자식의 class에 맞게 조금씩 다르게 동작하게 해주는 것
-- 약간 설명하기 어렵다 ..
모델의 청사진을 만들때 쓰는 원형 객체(original form)
JavaScript는 엄밀히 말하면 객체 지향언어가 아니기 때문에 class에서 instance객체로 구현 할 수가 없다. 그래서 그것을 구현 하기 위한 중간다리 역할 을 한다.
첫번째 코드
class Human { constructor(name, age) { this.name = name; this.age = age; } sleep() { console.log(`${this.name}은 잠에 들었습니다`); } }
두번째 코드
let kimcoding = new Human('김코딩', 30);
추상화와 캡슐화는 어떻게 다른가요?
캡슐화가 코드나 데이터의 은익에 포커스가 맞춰져 있다면,
추상화는 class를 사용하는 사람이 필요하지 않은 메소드 등을 노출 시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
인터페이스(Interface)란 무엇일까요?
interface : 접속기
즉 자바스크립트를 객체지향언어로 사용할 수있게 연결 시켜주는 것
JavaScript에서 class 키워드를 사용하면, 메소드의 은닉이 가능한가요?
addEventListener 속성은 어떤 클래스의 프로토타입에서 찾을 수 있나요?
EventTarget
remove 메소드는 어떤 클래스의 프로토타입에서 찾을 수 있나요?
모든 객체에 toString() 메소드가 존재하는 이유가 무엇인가요
모든 element는 node 이고 node는 EventTarget이다.