개발/Java Script

Object 생성 방법

ksy0314 2020. 9. 9. 18:31

ES6 class가 나오기전 자바스크립트에서 opp를 사용하기위해 사용한 4가지 방법

1. Functional

let Car = function(position){
	let someInstance = {};
	someInstance.position = position;
    someInstance.move = function(){
    	this.position++;
    }
	return someInstance
}
  • 모든 인스턴스가 각각 동일한 내용의 메소드를 가지고 있다(메모리 낭비)

2. Functional Shared

let extend = function (to, from) {
    for (let key in from) {
        to[key] = from[key];
    }
};

let someMethods = {};
someMethods.move = function () {
    this.position++;
}

let Car = function (position) {
    let someInstance = {
        position: position,
    }
    extend(someInstance, someMethods);
    return someInstance;
}
  • 모든 인스턴스가 하나의 메소드를 공유한다.(메모리 효율 증가)

3. Prototypal



let someMethods = {};
someMethods.move = function () {
    this.position++;
}

let Car = function (position) {
    let someInstance = Object.create(someMethods);
    someInstance.position = position;
    return someInstance;
}

3-1. Object.create

  • 매개변수로 객체를 받고 해당 객체를 __proto__로 가지는 새로운 객체를 만든다. (상속)

4. Pseudoclassical

let Car = function (position) {
    this.position = position;
}

Car.prototype.move = function () {
    this.position++;
}
  • new 생성자를 붙여야 this가 새로운 인스턴스가 됨

'개발 > Java Script' 카테고리의 다른 글

React  (0) 2020.10.06
ES6 Class, super  (0) 2020.09.09
this 와 new생성자  (0) 2020.09.09
Prototype  (0) 2020.09.09
객체 지향 프로그래밍(object oriented programming)  (0) 2020.09.09