자바스크립트에서는 class 키워드가 나오기 전에 사용하던 4가지 class 선언 방식이 있어요.
Functional
Functional Shared
Prototypal
Pseudoclassical
class는 하나의 정형화된 모델(틀 같은 것이죠!)을 만들어 두고 그 모델을 기반으로 인스턴스(복제품)을 만들어 내기 위해 사용해요! 공장에서 같은 제품을 계속해서 찍어내는 것과 비슷하다고 생각하면 돼요.
이러한 class 키워드를 사용하게 되면, 같은 기능의 함수를 써야 할 때 똑같은 코드를 작성하지 않아도 된다는 점이 좋아요! 그럼 4가지 class 선언 방식을 설명해볼게요.
Functional은 대략적인 흐름을 알 수 있기 때문에 자세한 설명은 생략할게요!
이러한 Functional 방식은 인스턴스를 생성할 때마다 모든 메서드를 someInstance에게 할당하게 돼요.
그래서 메모리 효율성이 낮다는 게 단점이에요!
// 1) Car를 선언 (position을 someInstance의 property로 지정)
let Car = function(){...}
// 2)메서드를 담아줄 객체 생성 (모든 메서드들은 someMethods에 담을 것.)
let someMethods = {};
someMethods.move = function() {...}
// 3) someInstance, someMethods를 합칠 extend 함수를 만들어 Car 함수 내부에서 합침.
let extend = function(to, from) {...}