"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript에서 생성자를 통해 메서드를 정의하면 중복된 함수 복사본이 생성됩니까?

JavaScript에서 생성자를 통해 메서드를 정의하면 중복된 함수 복사본이 생성됩니까?

2024년 11월 14일에 게시됨
검색:209

Does Defining Methods via Constructor in JavaScript Create Duplicate Function Copies?

프로토타입과 JavaScript의 생성자를 통한 메서드 정의의 성능 영향

JavaScript에는 공개 함수를 사용하여 "클래스"를 생성하기 위한 두 가지 접근 방식이 있습니다. 프로토타입이나 생성자를 사용합니다. 방법 1은 생성자를 통해 인스턴스에 함수를 할당하는 반면, 방법 2는 프로토타입을 활용하여 모든 인스턴스 간에 함수를 공유합니다.

방법 2가 종종 더 효율적이라고 주장되지만, 전용 인스턴스 변수의 인스턴스를 박탈하는 것은 상당한 단점이 있습니다. . 그러나 방법 1의 각 인스턴스에 대한 중복 함수 복사본 생성이 실제로 실제로 발생합니까?

JsPerf 벤치마크의 경험적 증거

JsPerf 벤치마킹은 방법 2(프로토타입) )는 실제로 방법 1(생성자)보다 성능이 뛰어납니다. 속도.

실용적 의미

이러한 차이는 벤치마크에서는 분명하지만 실제 애플리케이션과의 관련성은 의심스럽습니다. 상당한 수의 개체 인스턴스화(예: 프레임당 10,000개)가 있는 시나리오에서도 이 미세 최적화는 성능 병목 현상을 완화할 가능성이 낮습니다.

권장 사항

최적화하는 경우 성능이 중요하므로 프로토타입을 통해 메서드를 선언하는 것이 좋습니다. 그렇지 않은 경우 방법 1은 더 큰 유연성을 제공하고 일반적인 개체 지향 프로그래밍 규칙을 준수합니다. 또한 밑줄 접두사로 표시되는 개인 속성(예: _process())을 사용하면 캡슐화가 향상되고 직접 수정이 방지됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3