객체 지향을 쉽게 이해하기 위해서, 사극 드라마를 떠올려보자!
대장장이가 도구를 만들 때 거푸집에 청동이나 철을 넣고 굳히면 거푸집의 모양대로 도구가 만들어진다.
이때 거푸집이 객체이고 완성된 무기가 인스턴스이다.
이를 코드로 만들어보자.
function Tool(name, metal) {
this.name = name;
this.metal = metal;
}
Tool.prototype.use = function() {
console.log(`${this.name}을 사용합니다`);
}
class Tool {
constructor(name, metal) {
this.name = name;
this.metal = metal;
}
use() {
console.log(`${this.name}을 사용합니다`);
}
}
인스턴스가 만들어질 때 실행되는 코드.
return 값을 만들지 않는다.
let sword = new Tool('knight', 'steel');
new 키워드를 사용해 인스턴스를 만들면 즉시 생성자 함수가 실행되며, 변수에 클래스의 설계를 가진 객체, 즉 인스턴스가 할당된다.
각각의 인스턴스는 클래스의 고유한 속성과 메서드를 갖는다.
속성: name, metal
메서드: use()
메서드는 쉽게 말해 "객체에 딸린 함수"다.
함수가 실행될 떄, 해당 scope마다 생성되는 고유한 실행 context(execution context).
예제에서 this는 인스턴스 객체를 의미한다. parameter로 넘어온 name, metal 등은 인스턴스 생성 시 지정하는 값이며 this에 할당한다는 것은 만들어진 인스턴스에 해당 이름, 금속을 부여하겠다는 의미이다.