객체 지향 복습하기
객체 : 객체의 상태를 나타내는 '변수' + 객체의 행동을 나타내는 '함수'
객체지향 프로그래밍 : 프로퍼티와 메소드로 이루어진 각 객체들의 상호작용을 중심으로 코드 작성
절차지향 프로그래밍 : 변수와 함수를 가지고 작업의 순서에 맞게 코드를 작성
object literal : 객체를 나타내는 문자열
객체 생성 방법
● factory function : 객체를 생성해서 리턴한 함수
function createUser(email, birthdate){
const user = {
email: email,
birthdate: birthdate,
buy(item){
console.log(`${this.email}buys ${item.name}`);
},
};
return user;
}
const user1 = createUser('chris123@google.com', '1992-03-21');
● constructor function (=생성자 함수)
○ new 붙여서 호출해야 함 ○ 다른 일반 함수와 달리 함수 이름 중 첫번째 알파벳 대문자로 정의
function User(email, birthdate){
this.email = email;
this.birthdate = birthdate;
this.buy = function (item){
console.log(`${this.email}buys ${item.name}`);
};
}
const user1 = new User('chris123@google.com', '1992-03-21');
● class
: new 붙여서 객체 생성, 프로퍼티는 constructor 안에 메소드는 밖에
class User{
constructor(email, birthdate){
this.email = email;
this.birthdate = birthdate;
}
buy(item){
console.log(`${this.email}buys ${item.name}`);
}
}
객체 지향
① 추상화
어떤 구체적인 존재를 원하는 방향으로 간략화해서 나타내는 것
② 캡슐화
객체의 특정 프로퍼티에 직접 접근하지 못하도록 막는 것
setter 메소드 / getter 메소드
클로저(closure)
: 자바스크립트에서 어떤 함수와 그 함수가 참조할 수 있는 값들로 이루어진 환경을 하나로 묶은 것. 함수가 정의될 당시에 참조할 수 있었던 변수들을 계속 참조할 수 있는 상태의 함수
③ 상속
하나의 객체가 다른 객체의 프로퍼티나 메소드 물려받을 경우
* 자식 클래스로 객체를 만들려고 할 때는 자식 클래스의 생성자 함수 안에서 super 을 호출해서 부모클래스의 생성자 함수를 먼저 호출해주어야 함
④ 다형성
- 오버라이딩 : 부모클래스의 내용을 새로운 내용으로 덮어씀
* 자식 클래스로 만든 객체는 부모 클래스로 만든 객체로 인정
+)
instance of
: 변수가 어떤 클래스로 만든 객체인지 확인
static
: 클래스에 직접적으로 딸려있는 프로퍼티와 메소드 ; 객체가 아닌 클래스 자체로 접근