function makeCounter() {
let value = 0;
return {
increase: function() {
value++;
},
decrease: function() {
value--;
},
getValue: function() {
return value;
}
}
}
let counter1 = makeCounter()
counter1.increase()
counter1.getValue() // 1
let counter2 = makeCounter()
counter2.decrease()
counter2.decrease()
counter2.getValue() // -2
새로운 객체가 필요할 때마다 함수를 재사용할 수 있다는 점이 클로저 모듈의 장점입니다
객체 지향 프로그래밍은 하나의 모델이 되는 청사진을 만들고
그 청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴
자바스크립트에는 '객체'라는 개념이 객체 지향 프로그래밍과 무관하게 이미 존재하기 때문에
'청사진'을 바탕으로 한 객체는 인스턴스 객체는 instance, 청사진은 class라고 부릅니다.
function Car(brand, name, color) {
// 인스턴스가 만들어질 때 실행되는 코드
}
class Car{
constructor(brand, name, color)
// 인스턴스가 만들어질 때 실행되는 코드
}
✅ 최근에는 ES6 방법을 주로 사용합니다!
새로운 인스턴스를 만들 때 지켜야하는 규칙
let avante = new Car('hyundai', 'avante', 'black');
let avante = new Car('bmw', 'mini', 'white');
let avante = new Car('kia', 'k5', 'red');
인스턴스를 만들 때 new 키워드를 사용하고 즉시 생성자 함수가 실행되며
변수에 클래스의 설계를 가진 새로운 객체인 인스턴스가 할당됩니다.
각각의 인스턴스는 클래스의 고유한 속성과 메서드를 가지게 됩니다.