생성자 내에서 프로토타입 메서드 할당: 잠재적인 단점 및 범위 지정 문제
스타일 선호도의 우선순위를 지정하는 동시에 잠재적인 단점과 범위 지정 문제를 해결하는 것이 중요합니다. 생성자 함수 내부에 프로토타입 메서드를 할당하는 것과 관련됩니다. 다음 코드 구조를 고려하십시오.
구조 1:
<code class="javascript">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; } };</code>
구조 2:
<code class="javascript">var Filter = function(category, value) { this.category = category; this.value = value; }; Filter.prototype.checkProduct = function(product) { // run some checks return is_match; }</code>
단점 및 범위 지정 문제:
1. 반복적인 프로토타입 할당 및 기능 생성:
구조 1에서 프로토타입은 각 인스턴스 생성마다 계속해서 재할당됩니다. 이는 할당을 반복할 뿐만 아니라 각 인스턴스에 대해 새로운 함수 개체를 생성합니다.
2. 예기치 않은 범위 지정 문제:
구조 1은 예기치 않은 범위 지정 문제로 이어질 수 있습니다. 프로토타입 메서드가 생성자의 지역 변수를 참조하는 경우 첫 번째 구조로 인해 의도하지 않은 동작이 발생할 수 있습니다. 다음 예를 고려하십시오.
<code class="javascript">var Counter = function(initialValue) { var value = initialValue; // product is a JSON object Counter.prototype.get = function() { return value++; } }; var c1 = new Counter(0); var c2 = new Counter(10); console.log(c1.get()); // outputs 10, should output 0</code>
이 경우 각 인스턴스에 대해 생성된 get 메소드는 동일한 프로토타입 객체를 공유합니다. 결과적으로 값 변수가 인스턴스 전체에서 증가하고 공유되어 잘못된 출력이 발생합니다.
기타 고려 사항:
결론:
개인 선호도는 다를 수 있지만 잠재력을 인식하는 것이 중요합니다. 생성자 함수 내부에 프로토타입 메소드를 할당하는 것과 관련된 단점 및 범위 지정 문제. 신뢰성과 유지관리성을 위해 일반적으로 두 번째 코드 구조를 권장합니다.
위 내용은 일반적으로 JavaScript에서 생성자 함수 내에 프로토타입 메서드를 할당하는 것이 나쁜 습관으로 간주되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!