자바 스크립트 : 모듈 패턴 대 생성자 / 프로토 타입 패턴?
모듈 패턴 또는 Constructor / protoType 패턴이 내 작업에 더 적합한 지 알고 싶습니다.
기본적으로 눈에 잘 띄지 않는 자바 스크립트를 사용하고 있습니다. HTML 문서에는 .js 파일에 대한 참조가 있습니다.
모듈 패턴에 대한 나의 이해 :
- INIT 메서드를 호출합니다 (기본적으로 모듈 패턴을 사용하여 만들고 반환 할 수있는 공용 메서드).
- INIT 방법에서 모든 클릭 이벤트 등을 할당합니다.
이것은 객체 및 상속 계층 등을 만들 필요가 없기 때문에 내 상황에 대한 완벽한 패턴처럼 들립니다.
생성자 / 프로토 타입 패턴에 대한 나의 이해 :
- 객체 생성 용
- 상속을 사용하기 위해 (즉, 상위 유형의 하위 유형)
눈에 잘 띄지 않는 자바 스크립트를 제공하기 위해 모듈 패턴이 이상적입니까?
생성자 함수와 프로토 타입은 클래스와 인스턴스를 구현하는 합리적인 방법 중 하나입니다. 그것들은 해당 모델과 완전히 일치하지 않으므로 일반적으로 프로토 타입 측면에서 클래스를 구현하려면 특정 체계 또는 도우미 메서드를 선택해야합니다. ( JS의 클래스에 대한 배경 .)
모듈 패턴은 일반적으로 네임 스페이스에 사용되며, 여기서는 관련 함수 및 개체를 그룹화하는 저장소 역할을하는 단일 인스턴스가 있습니다. 이것은 프로토 타이핑이 좋은 것과는 다른 사용 사례입니다. 그들은 실제로 서로 경쟁하지 않습니다. 두 가지를 함께 사용할 수 있습니다 (예 : 생성자 함수를 모듈 안에 넣고라고 말하십시오 new MyNamespace.MyModule.MyClass(arguments)
).
모듈 패턴은 프로토 타입보다 훨씬 쉽고 우아합니다. 그러나 먼저 모바일을 생각하십시오. 초기화는 시작하기 전에 전체 블록을 구문 분석해야하므로 중형 / 대형 개체에는 관련 패턴이 없습니다. 다중 클로저는 또한 가비지 수집기가 해제하지 않는 순환 종속성 (특히 IE)을 생성하며, 결과적으로 창 (또는 탭)이 닫힐 때까지 해제되지 않는 더 많은 메모리 풋 프린트가 발생합니다. 비교하려면 크롬 작업 관리자를 확인하십시오. 프로토 타입 상속의 경우는 아니지만 모듈 패턴을 사용하여 객체 크기에 비례합니다. 위의 진술은 다음과 같은 여러 벤치 마크를 통해 검증되었습니다. http://jsperf.com/prototypal-performance/54
지난 테스트에서 볼 수 있듯이. 작은 개체는 일반 개체로 초기화하는 것이 좋습니다 (이러한 패턴없이). 폐쇄 나 상속이 필요하지 않은 단일 객체에 적합합니다. 이러한 패턴이 필요한지 평가하는 것이 현명합니다.
프로토 타입 패턴은 기능을 확장하는 데 도움이되며 객체 수에 관계없이 메모리에 함수 인스턴스가 하나만 있습니다. 모듈 패턴에서 각 객체는 메모리에 새로운 함수 인스턴스를 생성하지만 개인 / 공용 변수의 개념을 제공하고 변수와 함수를 캡슐화하는 데 도움이됩니다.
'IT TIP' 카테고리의 다른 글
node.js : '요청'모듈을 찾을 수 없습니다. (0) | 2020.10.25 |
---|---|
다중 FROM-의미 (0) | 2020.10.24 |
외부 CSS와 인라인 스타일 성능 차이? (0) | 2020.10.24 |
타겟팅 위치 : 현재 '멈춤'상태에있는 고정 요소 (0) | 2020.10.24 |
String.Substring ()이 코드에 병목 현상이있는 것 같습니다. (0) | 2020.10.24 |