Javascript 의 for in 순환 과 hasOwnProperty 를 결합 하여 사용 합 니 다.
2839 단어 forin 순환hasOwnProperty
// Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // bar moo
}
우 리 는 for in 순환 의 행 위 를 바 꿀 수 없습니다.순환 체 내의 일부 속성 을 여과 해 야 할 때 Object.prototype 의 hasOwnProperty 방법 으로 완성 할 수 있 습 니 다.알림:for in 순환 은 항상 전체 원형 체인 을 옮 겨 다 니 기 때문에 다 중 계승 대상 을 옮 겨 다 닐 때 효율 이 낮 습 니 다.hasOwnProperty 를 사용 하여 여과
// foo
for (var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i);
}
}
예 에서 hasOwnProperty 를 사 용 했 기 때문에 최종 적 으로 moo 를 출력 합 니 다.hasOwnProperty 를 무시 하면 코드 는 예상 치 못 한 결 과 를 출력 합 니 다.로 컬 프로 토 타 입(예 를 들 어 Object.prototype)이 확장 되 었 기 때 문 입 니 다.Prototype 프레임 워 크 는 자 바스 크 립 트 의 원시 대상 을 확장 하 는 라 이브 러 리 로 광범 위 하 게 사용 되 고 있 으 며,그 단점 도 뚜렷 하 다.프레임 워 크 가 도 입 된 후에 hasOwnProperty 를 사용 하지 않 고 필터 판단 을 하면 출력 결 과 는 당신 이 원 하 는 것 이 아니 라 는 것 을 보증 합 니 다.가장 좋 은 실천 은 for in 에서 항상 hasOwnProperty 를 사용 하여 판단 하 는 것 을 추천 합 니 다.실행 중인 코드 환경 이 오염 되 었 는 지 아 닌 지 를 보장 할 수 있 는 사람 이 없습니다.hasOwnProperty 는 대상 이 프로 토 타 입 체인 에 없 는 사용자 정의 속성 을 가지 고 있 는 지 확인 하기 위해 hasOwnProperty 방법 을 사용 할 필요 가 있 습 니 다.모든 대상 이 이 방법 을 가지 고 있 습 니 다.Object.prototype 에서 계승 합 니 다.알림:속성 이 존재 할 수 있 지만 값 은 undefined 입 니 다.hasOwnProperty 는 자 바스 크 립 트 에서 원형 체인 을 옮 겨 다 니 지 않 고 대상 속성 을 처리 할 수 있 는 유일한 방법 입 니 다.
// Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};
foo.bar; // 1
'bar' in foo; // true
foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true
hasOwnProperty 만 정확 한 예상 결 과 를 내 놓 았 습 니 다.대상 의 속성 을 옮 겨 다 닐 때 필요 합 니 다.대상 의 원형 체인 에 정 의 된 속성 을 제외 할 다른 방법 이 없습니다.hasOwnProperty 는 속성 자바 script 으로 hasOwnProperty 를 키워드 로 보호 하거나 보존 하지 않 았 기 때문에 대상 이 같은 이름 의 속성 을 가지 고 있다 면 확 장 된 hasOwnProperty 를 이용 하여 정확 한 결 과 를 얻 을 필요 가 있 습 니 다.
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // false
// hasOwnProperty this foo
{}.hasOwnProperty.call(foo, 'bar'); // true
소결 은 대상 이 어떤 속성 을 가지 고 있 는 지 검사 할 때 hasOwnProperty 는 이 작업 을 수행 할 수 있 는 유일한 방법 입 니 다.for in 순환 시 hasOwnProperty 를 추가 하여 판단 하 는 것 을 권장 합 니 다.로 컬 원형 확장 으로 인 한 오 류 를 효과적으로 피 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C의 루프컴퓨터에는 일련의 명령을 반복적으로 수행할 수 있는 능력이 있습니다. 이것은 기본 조건이 만족될 때까지 프로그램의 특정 부분을 특정 횟수 또는 무한 반복하는 것을 포함합니다. 루프의 메서드 WHILE 루프: C 프로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.