인스턴스화 패턴은 JavaScript로 무언가를 만드는 방법이다. JavaScript는 객체를 생성하는 4가지 방법을 제공하는데 어떤 방법을 사용하든 모든 방법은 다음과 같은 기능을 제공한다.
JavaScript에는 아래와 같이 네가지 instantiation pattern이 있다.
1. Functional
2. Functional-shared
3. Prototypal
4. Pseudoclassical
let Food = function(name) {
let obj = {};
obj.name = name;
obj.eat = function() {
console.log(`${obj.name}을 먹는 중입니다.`)
}
return obj;
}
let food1 = Food('라면');
food1.eat(); // 라면을 먹는 중입니다.
let extend = function(to, from) {
for(let key in from) {
to[key] = from[key]
}
}
let Food = function(name) {
let obj = {};
obj.name = name;
extend(obj, method) // point!!!
return obj;
}
let method = {
eat : function() {
console.log(`${this.name}을 먹는 중입니다.`)
}
}
let food1 = Food('라면'); // 라면을 먹는 중입니다.
prototype chain을 사용하여 객체를 만든다.(Object.create 사용)
1. 별도의 객체에 모든 method를 작성한다.
2. 함수를 만든다.
3. 함수 안에서 Object.create 메소드를 사용하여 메소드를 참조한다.
4. 함수 내부의 속성을 정의 한 후 객체를 return 한다.
let Food = function(name) {
let obj = Object.create(method); // point!!!
obj.name = name;
return obj;
}
let method = {
eat : function() {
console.log(`${this.name}을 먹는 중입니다.`)
}
}
let food1 = Food('라면');
this
키워드를 사용하여 속성을 정의한다.new
키워드를 사용한다.let Food = function(name) {
this.name = name; // this 키워드 사용
}
Food.prototype.eat = function() {
console.log(`${this.name}을 먹는 중입니다.`)
}
let food1 = new Food('라면'); // new 키워드 사용
ƒ () {
console.log(`${this.name}을 먹는 중입니다.`)
}
food1.eat(); // 라면을 먹는 중입니다.
💁♀️ 참고블로그