souvenir

[JS] ES5문법과 ES6문법에서 객체를 만드는 차이 본문

2020년/Java script

[JS] ES5문법과 ES6문법에서 객체를 만드는 차이

풀빵이 2020. 8. 11. 18:13

ES5 문법에서 객체 만들기

 

1. Functional

var Car = function() {			//Car라는 함수를 변수 선언식으로 만듭니다. 클래스 선언시는 대문자로
	var someInstance = {};		//반환할 객체, 즉 복제품(Instance)를 선언
    
    someInstance.position = 0 ;		//위치 속성 선언
    someInstance.move = function() {//위치 이동하는 기능(method)을 함수로 선언함
    	this.position += 1;
    }
    
    return someInstance;		//복제품(instance) 반환
};

var car1 = Car();				//instance 만들기 및 method 실행
var car1 = Car();
car1.move();

 

2. Functional Shared

var Car = function(position) {	//functional한 방식으로 객체선언
	var someInstance = {
    	position: position;
    };
    extend(someInstace, someMethod);  //-->extend 함수 넣기
    return someInstance;
}

var someMethods = {};			//Car의 method를 담을 객체를 따로 선언함
someMethods.move = function() {
	this.posiotion +=1;
}

var extend = function(to, from) { //someInstance와 someMethods를 합치는 extend 함수
	for(var key in from) {		//-->Car 객체에도 넣기
    	to[key] = from[key];
    }
};

 

 

3. Prototypal

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

var Car = function(position) {
	var someInstance = Object.create(someMethods);  //->{}대신 Object.create()활용
    someInstance.position = position;
    return someInstance;
};

var car1 = Car(5);	//실행
var car2 = Car(10);

 

4. Pseudoclassical

var Car =function(porition) {
	this.position = position;
}

Car.prototype.move = function() { //prototype으로 연결하여 method 생성
	this.position += 1;
};

var car1 = new Car(5);  //여기는 new로 선언되는 이유는 무엇일까?
var car2 = new Car(10); 

 

 

 

 

Comments