반복자를 방해하지 않고 프로토타입 메소드에 액세스
도우미 메소드를 사용하여 Array.prototype 및 Object.prototype을 확장하는 것이 일반적이지만 이러한 메소드가 자주 나타납니다. for-in 루프 중에 잠재적으로 문제가 발생할 수 있습니다. 이를 방지하기 위해 개발자는 메소드를 열거 불가능으로 설정하여 이러한 루프에 메소드가 표시되는 것을 방지할 수 있습니다.
해결책: 열거 불가능 속성
EcmaScript 5.1에서는 열거할 수 없는 속성을 정의하는 데 사용할 수 있는 Object.defineProperty() 메서드. 이 메서드를 사용하면 개발자는 메서드의 열거 가능 속성을 false로 설정하여 for-in 루프에 표시되지 않게 할 수 있습니다.
다음 예에서는 메서드에서 "find"라는 비열거형 메서드를 정의하는 방법을 보여줍니다. Array.prototype:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in the array } });
이 정의를 사용하면 find 메소드를 의도한 대로 사용할 수 있지만 for-in 루프에는 표시되지 않습니다. 루프는 실제 배열 값에 대해서만 반복됩니다.
참고: 이 솔루션은 EcmaScript 5.1을 지원하지 않는 이전 브라우저에서는 지원되지 않습니다. 이러한 브라우저의 경우 개발자는 es5-shim과 같은 shim 라이브러리를 사용하여 호환성을 제공할 수 있습니다. 또한 최신 브라우저에서 사용할 수 있는 forEach() 메서드는 프로토타입 메서드를 만나지 않고 배열을 반복하기 위해 for-in 루프 대신 사용할 수 있습니다.
위 내용은 'for...in' 루프에 영향을 주지 않고 배열과 객체에 프로토타입 메서드를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!