객체.메서드()
과 같이 객체 내에 메서드를 호출하는 방법을 의미let counter1 = {
value: 0,
increase: function() {
this.value++ // 메서드 호출을 할 경우, this는 counter1을 가리킵니다
},
decrease: function() {
this.value--
},
getValue: function() {
return this.value
}
}
counter1.increase()
counter1.increase()
counter1.increase()
counter1.decrease()
counter1.getValue() // 2
⚠️ 메서드 호출 방식을 이용할 때에는 화살표 함수를 쓰지 않습니다.
mdn 화살표 함수 설명
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
클래스란 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type)이라고 할 수 있다. 결국 클래스는 객체 생성에 사용되는 패턴 혹은 청사진(blueprint)일 뿐이며 new 연산자를 통한 인스턴스화 과정이 필요하다.
생성자 함수와 new 연산자를 통해 인스턴스를 생성할 수 있다. 이때 생성자 함수는 클래스이자 생성자의 역할을 한다.
class Car {
constructor(brand, name, color){
//인스턴스가 만들어질 떄 실행되는 코드
}
}
// ES6 부터 class 키워드 이용하여 정의 가능
let avante = new Car('hyundai', 'avante', 'black');
let mini = new Car('bmw', 'mini', 'white');
//new 키워드를 통해 클래스의 인스턴스를 만들어낼 수 있다.
this는 인스턴스 객체를 의미한다. parameter로 넘어온 인스턴스 생성 시 지정하는 값
this 함수가 실행될 때 해당 스코프마다 생성되는 고유한 실행 컨텍스트 < new 키워드로 인스턴스를 생성했을때 해당인스턴스 값
new 연산자와 함께 생성자 함수를 호출하면 다음과 같은 수순으로 동작한다.