const user = {
user: 'jonas',
password: 'dk23e',
login(password) {
// login logic
},
sendMessage(str) {
// sending logic
}
}
추상(Abstraction)
=> 구체적인 객체들로부터 공통점을 취합하여 일반화하고, 불필요한 세부사항을 제거함으로써 중요 부분을 살리는 것을 말한다
캡슐화(Encapsulation)
=> 속성 및 메소드를 외부에서 접근하지 못하도록 비공개로 유지하는 것 (일부 메소드는 API로 노출될 수 있다)
=> 캡슐화를 통하여 외부의 개입으로 인한 원치 않는 내부 속성/상태가 조작되는 것을 방지하고 외부의 손상 위험 없이 내부 구현을 변경할 수 있다
상속(Inheritance)
=> 객체 간의 계층 관계를 구성하여 공통 논리를 재사용하고 실제 관계를 모델링 할 수 있다
=> 적절한 상속을 이용하여 코드의 중복을 줄일 수 있어 코드의 간결성을 더해준다
다형성(Polymorphism)
=> 상속받은 메소드를 재정의(오버라이딩)하거나 다른 타입으로 변환(오버로딩)하여 사용하는 것을 말한다
=> JavaScript에서는 함수의 매개변수를 자유롭게 사용하기 때문에 오버로딩은 JavaScript에서는 존재하지 않는 개념이다 그래서 JavaScript에서의 다형성은 오버라이딩쪽 개념과 가깝다