1. Functional
함수를 통해 object 생성 하지만 인스턴스가 만들어 질 때마다 position, move에 대한 메모리를 매번 차지한다.
var Car = function() {
var someInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position += 1;
}
return someInstance;
};
var car1 = Car();
var car2 = Car();
car1.move();
2. Functional Shared
함수를 통해 object를 생성하지만 메소드는 따로 분리하여 extend시켜주기 때문에 원본 메소드에 대한 메모리만 사용되서 메모리 효율이 좋아짐.
var extend = function(to, from) {
for (var key in from) {
to[key] = from[key];
}
};
var someMethods = {};
someMethods.move = function() {
this.position += 1;
};
var Car = function(position) {
var someInstance = {
position : position,
};
extend(someInstance, someMethods);
return someInstance;
};
var car1 = Car(5);
var car2 = Car(10);
car1.move();
3. Prototypal
Object.create()로 생성 << 추가적으로 블로그의 다른 글로 상세히 다루도록 하겠음. 일단 메모리 효율이 더 좋아졌다는 점!!
var someMethods = {};
someMethods.move = function() {
this.position += 1;
};
var Car = function(position) {
var someInstance = Object.create(someMethods);
someInstance.position = position;
return someInstance;
};
var car1 = Car(5);
var car2 = Car(10);
car1.move();
4. Pseudoclassical
new Operator을 통한 생성 가장 많이 쓰임 물론 es6전에!! 지금은 class를 권장한다.
var Car = function(position) {
this.position = position;
};
Car.prototype.move = function() {
this.position += 1;
};
var car1 = new Car(5);
var car2 = new Car(10);
'Javascript > prototype & object.create()' 카테고리의 다른 글
prototype 과 __proto__ (0) | 2020.02.06 |
---|