>웹 프론트엔드 >JS 튜토리얼 >for-in 루프에 영향을 주지 않고 Array.prototype 및 Object.prototype에 도우미 메서드를 추가하려면 어떻게 해야 합니까?

for-in 루프에 영향을 주지 않고 Array.prototype 및 Object.prototype에 도우미 메서드를 추가하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-10 21:26:13948검색

How Can I Add Helper Methods to Array.prototype and Object.prototype Without Affecting for-in Loops?

for-in 루프에 표시하지 않고 Array.prototype 및 Object.prototype에 대한 도우미 메서드 정의

내장 프로토타입 확장 Array.prototype 및 Object.prototype과 같이 코딩을 단순화하는 도우미 메서드를 제공할 수 있습니다. 그러나 이러한 메서드는 for-in 루프에 예기치 않게 나타나 예상 기능을 방해할 수 있습니다.

문제

Array.prototype에 find 메서드와 같은 도우미 메서드 추가 질문에서 언급한 것처럼 for-in 루프를 사용하여 배열을 반복할 때 원치 않는 속성이 발생할 수 있습니다. 이 문제를 방지하고 루프에서 배열 요소만 반환되도록 하려면 이러한 메서드가 속성으로 표시되지 않도록 올바르게 정의하는 것이 중요합니다.

해결책: 열거할 수 없는 속성

EcmaScript 5.1에는 열거 불가능한 속성 개념이 도입되었습니다. 프로토타입에 메서드를 정의할 때 열거 가능 옵션을 false로 설정하면 for-in 반복 중에 해당 메서드가 나열되는 것을 방지할 수 있습니다.

Object.defineProperty(Array.prototype, "find", {
    enumerable: false,
    writable: true,
    value: function(testFun) {
        // Code to find element in array
    }
});

이 접근 방식을 사용하면 find 메서드를 배열 조작에 사용할 수 있습니다. 하지만 for-in 루프 결과에는 포함되지 않으므로 루프의 예상 동작을 방해하지 않습니다.

레거시 브라우저 지원

열거 불가능한 속성을 지원하지 않는 브라우저의 경우 대체 방법을 사용하거나 Object.prototype.hasOwnProperty를 사용하여 속성이 있는지 확인하는 것이 좋습니다.

위 내용은 for-in 루프에 영향을 주지 않고 Array.prototype 및 Object.prototype에 도우미 메서드를 추가하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.