1. Instantiation Patterns (인스턴스화)
가. Class 선언이 나오기 전 사용했던 4가지의 방법입니다.
나. 4가지의 방법은 아래와 같습니다.
1) Functional
2) Functional-shared
3) Prototypal
4) Pseudoclassical
2. Functional
가. 함수를 사용하는 방식으로 예는 아래와 같습니다.
const car = function(driver) {
const newCar = { };
newCar.driver = driver;
newCar.drive = function( ) {
console.log('부릉부릉 !');
};
return newCar;
}
나. 장점
1) 가장 단순하고 기본적입니다.
2) 작동 방식에 대해서 좋은 아이디어를 줄 수 있습니다.
다. 단점
1) 모든 메소드가 함수 내부에 있어서 원치 않은 오류가 발생할 수 있습니다.
2) 메서드가 메모리에 복사되어, 메모리가 많이 사용 됩니다.
3. Functional Shared
가. 모든 메소드가 팩토리 함수 및 별도의 오브젝트에 있다는 것을 제외하면
Functional 과 유사합니다.
나. 메모리 사용량이 줄이고, 속도를 높일 수 있습니다.
다. 예는 아래와 같습니다.
const car = function(driver) {
const newCar = { };
newCar.driver = driver;
extend(newCar, carMethods);
return newCar;
};
const carMethods = {
drive: function() {
console.log('부릉부릉 !');
}
}
라. 장점
1) 메모리를 많이 줄일 수 있습니다.
2) 동일한 인스턴스를 대량으로 만들 수 있습니다.
3) 모든 메소드들이 같은 곳에 있습니다.
다. 단점
1) 함수와 같은 객체를 통해 메소드를 보게 됩니다.
2) 어느 하나의 메소드를 편집하게 되면, 모든 메소드에 대해서 대처해야합니다.
4. Prototypal
가. Object.create()를 통해 메소드를 프로토타입으로 하는 객체를 생성합니다.
const car = function(driver) {
const newCar = Object.create(carMethods);
newCar.driver = driver;
return newCar;
};
const carMethods = {
drive: function() {
console.log('부릉부릉 !');
}
};
나. 장점
1) 메소드는 객체의 프로토타입에 있으므로 직접 액세스는 불가능합니다.
다. 단점
1) 사용이 어렵습니다.
2) 모든 인스턴스의 메소드는 Functional Shared와 같은 메소드를 포함하는 오브젝트를 가리킵니다.
5. Pseudoclassical
가. 인스턴스화의 가장 최적의 형태입니다.
나. 인스턴스 생성시 new 키워드 사용합니다.
const car = function(driver) {
this.driver = driver;
};
car.prototype.drive = function() {
console.log('부릉부릉 !');
}
const newCar = new Car('A');
다. 장점
1) 간단하고, 중요한 부분(?)을 실행합니다.
라. 단점
1) this에 대해서 사용을 조심스럽게 해야합니다.
2) this 사용에 대해 혼란이 있을 수 있습니다.
이것으로 Instantiation Patterns에 대해서 알아보았습니다.
'JavaScript > 6' 카테고리의 다른 글
Object Oriented Programming(객체지향 프로그래밍) (0) | 2020.05.08 |
---|