for-in 컨트롤 블록을 사용할 때 javascript 객체의 기본 제공 속성이 반복되지 않는 이유는 무엇입니까?Javascript for 및 내장 속성
예를 들어 :
var y = 'car';
for (var j in y)
{
console.log(j);
}
인쇄됩니다
0
1
2
을 String.prototype 등 길이, 교체, 문자열, 속성을 가지고 있지만
프로토 타입을 확장하는 경우, 그러나 , 모든 새 속성 은 반복됩니다.
인쇄됩니다 :
0
1
2
foo
FYI : JavaScript 속성에 대한 반복 순서는 정의되지 않았습니다. 많은 구현체는 정의 된 순서대로 속성을 반환 할 것이고 다른 것들 (정확하게 기억한다면 Opera와 Safari의 버전)은 순서가 틀릴 수 있습니다. – mikerobi
@mikerobi : Chrome은 다른 브라우저와 동일한 순서로 반복하지 않기 위해 [잘 알려져 있습니다] (http://code.google.com/p/chromium/issues/detail?id=883). –
@Andy E, 오래된 문제인데 사용 된 모든 Chrome 버전이 정의 순서대로 반복되었습니다. 반복으로 많은 개발자가 결함 코드를 작성하게됩니다. 작동하는 것처럼 보이지만 예기치 않게 언제든지 중단 될 수있는 코드는 작동하지 않는 코드보다 훨씬 위험합니다. – mikerobi