객체 지향 프로그래밍은 데이터와 기능을 한 번에 묶어서 처리할 수 있다.
객체 내에는 메서드와 속성이 존재한다.

객체를 생성하기 위한 청사진이다.
위 사진 처럼 자동차를 만들 때 틀이 있고 그 안에 다양한 속성들이 있다.
이러한 속성들이 인스턴스 객체, 줄여서 인스턴스라고 한다.
인스턴스는 생성자를 통해 부여할 수 있다.
클래스를 정의하는 방식은 두가지가 있다.
<ES5>
function Car(brand, name, color) {
// 인스턴스가 만들어질 때 실행되는 코드
}
<ES6>
class Car {
constructor (brand, name, color) {
// 인스턴스가 만들어질 때 실행되는 코드
}
}
let avante = new Car('hyundai', 'avante', 'black');
let mini = new Car('bmw', 'mini', 'white');
let beetles = new Car('volkswagen', 'beetles', 'red');
new 키워드를 통해 클래스의 인스턴스를 만든다. 각각의 인스턴스는 클래스의 고유한 속성과 메서드를 갖는다.
<ES5>
function Car(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
<ES6>
class Car {
constructor (brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
}
this : 인스턴스 객체를 의미. 즉 this.brand 는 parameter로 넘어온 brand이다.
<ES5>
function Car(brand, name, color) { /* 속성 정의 */
Car.prototype.refuel = function() {
// 연료 공급을 구현하는 코드
}
Car.prototype.drive = function() { /* 속성 정의 */
// 운전을 구현하는 코드
}
}
<ES6>
class Car {
constructor (brand, name, color) {
refuel() {
}
drive() {
}
}
}
let avante = new Car('hyundai', 'avante', 'black');
avante.color; // 'black'
avante.drive(); // 아반떼가 운전을 시작
let mini = new Car('bmw', 'mini', 'white');
mini.brand; // 'bmw'
mini.refuel(); // 미니에 연료를 공급