IT TIP

자바 스크립트 : 모듈 패턴 대 생성자 / 프로토 타입 패턴?

itqueen 2020. 10. 24. 12:11
반응형

자바 스크립트 : 모듈 패턴 대 생성자 / 프로토 타입 패턴?


모듈 패턴 또는 Constructor / protoType 패턴이 내 작업에 더 적합한 지 알고 싶습니다.

기본적으로 눈에 잘 띄지 않는 자바 스크립트를 사용하고 있습니다. HTML 문서에는 .js 파일에 대한 참조가 있습니다.

모듈 패턴에 대한 나의 이해 :

  • INIT 메서드를 호출합니다 (기본적으로 모듈 패턴을 사용하여 만들고 반환 할 수있는 공용 메서드).
  • INIT 방법에서 모든 클릭 이벤트 등을 할당합니다.

이것은 객체 및 상속 계층 등을 만들 필요가 없기 때문에 내 상황에 대한 완벽한 패턴처럼 들립니다.

생성자 / 프로토 타입 패턴에 대한 나의 이해 :

  • 객체 생성 용
  • 상속을 사용하기 위해 (즉, 상위 유형의 하위 유형)

눈에 잘 띄지 않는 자바 스크립트를 제공하기 위해 모듈 패턴이 이상적입니까?


생성자 함수와 프로토 타입은 클래스와 인스턴스를 구현하는 합리적인 방법 중 하나입니다. 그것들은 해당 모델과 완전히 일치하지 않으므로 일반적으로 프로토 타입 측면에서 클래스를 구현하려면 특정 체계 또는 도우미 메서드를 선택해야합니다. ( JS의 클래스에 대한 배경 .)

모듈 패턴은 일반적으로 네임 스페이스에 사용되며, 여기서는 관련 함수 및 개체를 그룹화하는 저장소 역할을하는 단일 인스턴스가 있습니다. 이것은 프로토 타이핑이 좋은 것과는 다른 사용 사례입니다. 그들은 실제로 서로 경쟁하지 않습니다. 두 가지를 함께 사용할 수 있습니다 (예 : 생성자 함수를 모듈 안에 넣고라고 말하십시오 new MyNamespace.MyModule.MyClass(arguments)).


모듈 패턴은 프로토 타입보다 훨씬 쉽고 우아합니다. 그러나 먼저 모바일을 생각하십시오. 초기화는 시작하기 전에 전체 블록을 구문 분석해야하므로 중형 / 대형 개체에는 관련 패턴이 없습니다. 다중 클로저는 또한 가비지 수집기가 해제하지 않는 순환 종속성 (특히 IE)을 생성하며, 결과적으로 창 (또는 탭)이 닫힐 때까지 해제되지 않는 더 많은 메모리 풋 프린트가 발생합니다. 비교하려면 크롬 작업 관리자를 확인하십시오. 프로토 타입 상속의 경우는 아니지만 모듈 패턴을 사용하여 객체 크기에 비례합니다. 위의 진술은 다음과 같은 여러 벤치 마크를 통해 검증되었습니다. http://jsperf.com/prototypal-performance/54

지난 테스트에서 볼 수 있듯이. 작은 개체는 일반 개체로 초기화하는 것이 좋습니다 (이러한 패턴없이). 폐쇄 나 상속이 필요하지 않은 단일 객체에 적합합니다. 이러한 패턴이 필요한지 평가하는 것이 현명합니다.


프로토 타입 패턴은 기능을 확장하는 데 도움이되며 객체 수에 관계없이 메모리에 함수 인스턴스가 하나만 있습니다. 모듈 패턴에서 각 객체는 메모리에 새로운 함수 인스턴스를 생성하지만 개인 / 공용 변수의 개념을 제공하고 변수와 함수를 캡슐화하는 데 도움이됩니다.

참고 URL : https://stackoverflow.com/questions/3790909/javascript-module-pattern-vs-constructor-prototype-pattern

반응형