ES6 class
키워드가 나오기 전, 클래스(class)라는 개념이 없는 자바스크립트를 객체지향으로 사용하기 위한 다양한 시도가 있었다. Instantiation은 말 그대로 인스턴스를 만드는 과정에 관한 내용을 다루며 4가지 방법이 있다.
var Car = function() {
var someInstance = {};
someInstance.position = 0; //초기화
someInstance.move = function() {
this.position += 1;
}
return someInstance;
};
var car1 = Car();
var car2 = Car();
car1.move
var Car = function(position){
var someInstance = {
position : position
};
extend(someInstance, someMethods);
return someInstance;
};
var extend = function(target, source){
for(let key in source){
target[key] = source[key];
}
};
var someMethods = {};
someMethods.move = function(){
this.position += 1;
};
var car1 = Car(5);
var car2 = Car(10);
Object.create(proto)
을 활용하는 방법이다. 매개변수 proto
는 새로 만든 오브젝트의 프로토타입이어야 할 오브젝트. 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);
new
키워드를 사용할 수 있도록 하는 방법이다. var Car = function(position) {
this.position = position;
}
Car.prototype.move = function(){
this.position += 1;
}
var car1 = new Car(5);
var car2 = new Car(10);
Reference
Object-oriented Programming in JavaScript: Made Super Simple | Mosh
모던 JavaScript 튜토리얼
MDN