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 |