"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 생성자 외부에서 정의되는 프로토 타입 방법의 이유와 장점

생성자 외부에서 정의되는 프로토 타입 방법의 이유와 장점

2025-04-19에 게시되었습니다
검색:784

Why Should Prototype Methods Be Defined Outside the Constructor Function?

그러나이 접근법은 대체 구조와 비교하여 몇 가지 단점이 있습니다 : var filter = function (범주, 값) { this.category = 카테고리; this.value = value; }; // var filter = function () {... ...} Filter.Prototype.CheckProduct = Function (제품) { // 수표를 실행합니다 반환 IS_MATCH; }

기능적 단점 :
var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};

var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};

프로토 타입 메소드는 여러 번 지정되어 있으며, 이는 불필요하고 성능이 발사 될 수 있습니다. 프로토 타입 방법 내에서 생성자의 변수는 예상치 못한 결과로 이어질 수 있습니다. 예 :

    var counter = function (InitialValue) { var value = 초기 값; // 제품은 JSON 객체입니다 coun 반환 값; } }; var c1 = 새로운 카운터 (0); var c2 = 새로운 카운터 (10); console.log (c1.get ()); // outputs 10, work rit put 0
  1. 이 시나리오에서 get ()는 C1 대신 C2의 로컬 변수 값의 값을 반환하기 때문에 메소드 폐쇄 참조
var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};

    생성자 :
  • 첫 번째 구조는 생성자 외부의 프로토 타입에 액세스하는 것을 금지하여 유연성을 잠재적으로 제한합니다.
  • 메서드 배치 :
  • 두 번째 구조에서 메소드는 프로토 타입이 아닌 객체에 직접 배치됩니다. 케이스.

결론 :

첫 번째 구조는 스타일 적으로 유쾌 할 수 있지만 기능적 단점 및 범위 문제를 도입 할 수 있습니다. 일반적으로 잠재적 인 문제를 피하기 위해 생성자 함수 외부 (두 번째 구조에서와 같이) 외부의 프로토 타입 메서드를 할당하는 것이 좋습니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3