프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
- 객체를 만들어 내기 위한 설계도 혹은 틀
- 연관되어 있는 변수와 메서드의 집합
- 소프트웨어 세계에 구현할 대상
- 클래스에 선언된 모양 그대로 생성된 실체
- 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것
- 객체를 생성하는 함수를 생성자 함수라고 한다..
- 함수와 일반적인 기술차이는 없지만, 다른 건 함수명이 무조건 대문자로 시작한다.
- 생성자 함수를 바탕으로 객체를 만들기 위해서
new
라는 키워드를 사용한다.
function FishBunFrame(a, b){ //-> 일반적인 함수선언과 크게 다를게 없음. 대문자로 시작하는것만 다름 this.base = a; //--> this는 새로 생성되는 객체를 말함 this.flaver = b; } let choco = new FishBunFrame('쌀', '초콜렛'); console.log(choco); //--> {base: "쌀", flaver: "초콜렛"}
class FishBunFrame2 { //--> class로 생성자 함수 생성 constructor(c, d){ //--> constructor로 parameter 받음 this.base = c; this.flaver = d; } } let banana = new FishBunFrame2('옥수수가루', '바나나'); console.log(banana); //--> {base: "옥수수가루", flaver: "바나나"}
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