생성자 함수 내에서 프로토타입 메서드 할당: 잠재적 위험
스타일리시하게 일부에서는 프로토타입 메서드 정의를 위해 다음 구조를 선호합니다.
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; };// var Filter = function(){...} Filter.prototype.checkProduct = function( product ){ // run some checks return is_match; }
기능적 단점:
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
이 시나리오에서 get()은 c1 대신 c2의 지역 변수 값을 반환합니다. 왜냐하면 메서드 클로저가 프로토타입에서 가장 최근에 정의된 값을 참조하기 때문입니다.
기타 고려 사항:
결론 :
첫 번째 구조는 스타일적으로는 만족스러울 수 있지만 기능적 단점과 범위 문제가 발생할 수 있습니다. 잠재적인 문제를 피하기 위해 일반적으로 생성자 함수 외부(두 번째 구조에서와 같이) 프로토타입 메서드를 할당하는 것이 좋습니다.
위 내용은 프로토타입 메서드를 생성자 함수 외부에서 정의해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!