본문 바로가기

Javascript/prototype & object.create()

Javascript에서 Object를 생성하는 여러가지 방법들

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