Instantiation Patterns

feelslikemmmm·2020년 10월 28일
0

javascript

목록 보기
28/37
post-thumbnail

Instantiation Patterns

Instantiation은 말 그대로, 인스턴스를 만드는 과정에 관련한 내용입니다

ES6 class 키워드가 나오기 전, JavaScript를 객체지향적으로 사용하기 위한 다양한 시도가 있었습니다.

이러한 다양한 패턴을 알아볼 필요가 있습니다.

JavaScript의 Class


JavaScript에 Class가 나오기 전에 사용하던 4가지 Class 선언 방식이 있습니다

Class는 하나의 정형화 된 모델을 만들어두고, 그 모델을 기반으로 한 인스턴스(복제품)을 만들기 위해 사용합니다

마치 공장에서 같은 규격의 제품들을 찍어내는 것과 비슷합니다

예를들어, Car라는 객체는 항상 position이라는 property와 move라는 method를 갖는다고 가정해봅시다

그리고 Car1, Car2, Car3 ... 매우 많은 Car들을 사용하는 프로그램을 작성한다고 했을 때,

많은 Car들을 하나하나 변수로 선언해 주는 것은 많은 시간을 필요로 합니다

여기에서 필요한것은 Car라는 모델을 만들어 두고,비슷한 객체들을 찍어내는 기능이겠죠?

그리고 찍어 내는 기능은 함수를 이용해서 표현할 수 있다는 점 입니다.

1. Functional

먼저 Functional Instantiation 방식으로 우리들의 자동차 공장을 만들어 봅시다

이 방식은 말 그대로 함수를 이용해서 찍어내는 방식입니다.

2. Functional Shared

이제 Functional Shared 방식을 살펴봅시다

왜 굳이 번거롭게 이런 방식을 사용할까요?

그 이유는 이전의 Functional방식은 인스턴스를 생성할 때마다 모든 메소드를 someInstance에게

할당하므로, 각각의 인스턴스들이 메소드의 수 만큼의 메모리를 더 차지하기 때문입니다

하지만 Functional Shared 방식을 사용한다면, someMethod라는 객체에 있는 메소드들의 메모리 주소만을

참조하기 때문에 메모리 효율이 좋아집니다

완전히 정확하지는 않지만, 확실히 메모리 사용이 효율적임을 알 수 있습니다

더 큰 프로젝트라면 그 차이가 어마어마 할 것입니다

3. Prototypal

세번째 방식은 Prototypal Instantiation 입니다


여기서 궁금한 점이 생긴다 Object.create의 역할은 무엇일까요?

Object.create는 특정 객체를 프로토타입으로 하는 객체를 생성해 주는 함수입니다.

4. Pseudoclassical

마지막으로 Pseudoclassical 방식입니다

profile
꾸준함을 잃지 말자는 모토를 가지고 개발하고 있습니다 :)

0개의 댓글