Object를 생성하는 방법들
1. Functional
함수를 이용해서 인스턴스 객체 생성하기
1
2
3
4
5
6
7
8
var Car = function () {
var someInstance = {};
someInstance.position = 0;
someInstance.move = function () {
this.position += 1; // this === someInstance
};
return someInstance; // 인스턴스 반환
};
2. Functional Shared
인스턴스의 메서드를 함수 밖에 서 정의 및 할당한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var extend = function (to, from) {
for (var key in from) {
to[key] = from[key];
}
};
var someMethods = {}; // 함수 Car 외부에 인스턴스에게 공유할 메서드 정의 및 할당
someMethod.move = function () {
this.positio += 1; // 함수 extend 통해 this === someInstance
};
var Car = function () {
var someInstance = {};
someInstance.position = 0;
someInstance.move = function () {
this.position += 1; // this === someInstance
};
extend(someInstance, someMethods);
return someInstance; // 인스턴스 반환
};
var car1 = Car(5);
3. Prototypal Instantiation
프로토타입 체인을 이용하여 인스턴스 객체 생성하기 Object.create() 메서드를 이용해서 인스턴스 객체의 부모 객체에 메서드 정의 및 할당한다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var someMethods = {};
someMethod.move = function () {
this.positio += 1;
};
var Car = function () {
var someInstance = Object.create(someMethods);
someInstance.position = 0;
someInstance.move = function () {
this.position += 1; // this === someInstance
};
return someInstance; // 인스턴스 반환
};
var car1 = Car(5);
4.Pesudoclassical
인스턴스 객체 생성 시, new 키워드 사용하며, this를 사용한다.
1
2
3
4
5
6
7
8
var Car = function (position) {
this.position = position;
};
Car.prototype.move = function () {
this.position += 1;
};
var car1 = new Car(5);