객체 속성 반복: Propt의 신비 공개
for...in 루프를 사용하여 객체의 속성을 반복할 때, propt라는 변수가 나타납니다. 이 변수는 개체의 각 속성 키를 나타냅니다. 그런데 왜 이런 식으로 작동하는 걸까요?
그 이유는 Object.prototype에 모든 객체에 상속되는 추가 속성이 포함되어 있기 때문입니다. 이러한 속성은 특정 개체의 일부가 아니지만 모든 개체에서 공유됩니다. 예를 들어, toString 및 hasOwnProperty는 두 가지 일반적인 예입니다.
이러한 상속된 속성을 실수로 반복하는 것을 방지하려면 Object.prototype.hasOwnProperty.call(obj, prop)과 같은 추가 검사를 포함하는 것이 중요합니다. 이 검사를 통해 반복되는 속성이 개체에 구체적으로 속하고 기본 클래스에서 상속되지 않았는지 확인합니다.
명확하게 설명하기 위해 업데이트된 코드 샘플은 다음과 같습니다.
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // do stuff } }
추가로, 대신 obj.hasOwnProperty(prop)를 사용할 수 있지만 객체에 동일한 이름을 가진 관련 없는 필드가 있는 경우 이 메서드가 제대로 작동하지 않을 수 있습니다. 따라서 Object.prototype을 통해 hasOwnProperty를 호출하는 것이 더 안정적입니다.
위 내용은 'for...in' 반복에 때때로 예상치 못한 속성이 포함되는 이유는 무엇이며, 이를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!