1.객체지향 프로그래밍
- 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인
- 각 객체는 메세지를 받을 수 있고, 데이터를 처리하고, 또 다른 객체에 메세지를 전달할 수 있다.
- 보다 유연하고 유지보수성이 높은 프로그래밍을 할 수 있도록 의도된 개념
- 객체를 매번 만들어서 사용하지 않아도 class라는 설계도를 통해 공장처럼 찍어낼 수 있다.
2.this
- 객체 내부에서, 해당 객체의 프로퍼티에 접근하려면, 'this'라는 키워드를 사용할 수 있다.
let ray = {
name: 'Ray',
price: 2000000,
getName: function() {
return this.name;
},
getPrice: function() {
return this.price;
},
applyDiscount: function(discount) {
return this.price * discount;
}
}
- 위 코드에서 this.name => ray.name을 의미
3.생성자(Constructor)
- 객체의 설계도인 클래스는 문법이 비슷하다. 둘의 큰 차이는 cunstructor라는 생성자 함수이다.
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
}
}
const morning = new Car('Morning', 2000000);
- Car는 class의 이름, 항상 대문자로 시작하고 CamelCase로 작성
- Car class의 instance를 생성할때마다 constructor메서드가 호출
- constructor() 메서드는 name,price 2개의 argument를 받는다.
- this 키워드는 class의 실행범위(context)에서 this는 해당 instance를 의미한다.
- cunstructor()에서 인자로 넘어오는 name과 price를 사용해 Car instance의 name,price 프로퍼티에 값을 할당
- 클래스 내에서 name,price와 같이 변경 가능한 상태값이자 class내의 컨텍스트에서 어느 곳에서나 사용할 수 있는 변수를 '멤버 변수'라고 부른다.
- 멤버 변수는 'this' 키워드로 접근한다.
class class이름 {
constructor(parameter1,parameter2) {
this.parameter1 = name;
this.parameter2 = age;
}
}
4.인스턴스(instance)
- 인스턴스는 class를 통해 생성된 객체이다.
- 인스턴스는 class의 property이름과 method를 갖는 객체이다.
- 인스턴스 마다 모두 다른 property 값을 갖고 있다.
const morning = new Car('Morning', 20000000);
- 인스턴스는 Class 이름에 new를 붙여서 생성
- 클래스 이름 우측에 () 내부에 constructor에서 필요한 정보를 인자로 넘긴다.
- Car클래스의 새로운 인스턴스를 생성하려면 new 키워드가 필요하다.
- new키워드는 constructor() 메서드를 호출하고 새로운 instance를 return해준다.
- morningdlfksms tmxmfldrhk 200000dlfksms Numberfmf Car 생성자에 넘겨줬고, name과 price 프로퍼티에 각자의 값이 할당
5.메서드 (Methods)
- 메서드는 함수이다.
- 객체가 프로퍼티 값으로 함수를 갖고 있는 것을 메서드라고 부른다.
- class의 method는 object의 문법과 같다.
- 다만 객체는 프로퍼티마다 콤마로 구분하지만 클래스는 필요없다.