객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 묶음으로 나타낸 것이 객체지향 프로그래밍이다.
이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자가 있어야 한다.
this 는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다. this를 통해서 자신이 속한 객체의 프로퍼티나 메서드를 참조할 수 있다.
예로 일반적으로 자기 자신이 속한 객체를 재귀적으로 참조하지 않는다.
const Circle = {
readius : 5,
getDiameter() {
return 2 * Circle.radius;
}
};
대신에 this를 사용한다. 여기서 this 는 CIrlce을 가리킨다.
const Circle = {
readius : 5,
getDiameter() {
return 2 * this.radius;
}
};
함수 지향 프로그래밍을 했던 경험이 커서 클래스에 대해 공부할 기회가 적었다.
클래스도 함수이다. 일급 객체이자 0개 이상의 메서드를 정의하고 메서드에는 constructor, 프로토타입 메서드, 정적 메서드가 존재한다. 기본 클래스 예시는
class Person {
constructor(name) {
this.name = name;
}
// 메서드 생성
sayHi() {
console.log(`hi! ${this.name}`);
}
// 정적 메서드
static sayHello() {
console.log('hi');
}
}
// 인스턴스 생성
const me = new Person('Lee');
console.log(me.name);
me.sayHi();
Person.sayHello();
constructor는 인스턴스를 생성하고 초기화하기 위한 특수한 메서드이다.
constructor 내부에서 return문은 반드시 생략한다.
인스턴스를 생성하지 않아도 호출할 수 있다.