JavaScript에서 Array.prototype 및 Object.prototype을 도우미 메서드로 확장하면 코드 기능이 향상될 수 있습니다. 그러나 for in 루프를 사용하여 객체를 반복할 때 이러한 메서드가 속성으로 나타날 수 있으며 이로 인해 잠재적인 문제가 발생할 수 있습니다.
이를 방지하려면 배열이 포함된 for in 루프를 피하는 것이 좋습니다. 또는 hasOwnProperty를 사용하여 프로토타입에서 상속된 속성을 필터링할 수 있습니다.
for (var prop in anyObj) { if (Object.prototype.hasOwnProperty.call(anyObj, prop)) { // Do something } }
그러나 이 접근 방식은 알 수 없는 프로토타입이 있는 객체를 처리하는 일반 함수에는 적합하지 않을 수 있습니다.
더 현대적인 솔루션 defineProperty:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in array } });
를 사용하여 열거할 수 없는 속성을 정의하는 것입니다. 이렇게 하면 find 메서드가 포함되지 않습니다. for in 루프를 사용하여 코드 명확성을 유지하고 잠재적인 충돌을 방지합니다.
위 내용은 'for...in' 루프에 영향을 주지 않고 배열 및 객체 프로토타입에 도우미 메서드를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!