다음과 같은 개체를 만들 경우:
으아악생성된 개체 는 항상 이렇게 보일까요?
으아악즉, 속성을 추가한 순서와 동일합니까?
P粉0069779562023-10-13 16:31:53
예(항상 삽입 순서대로 진행되는 것은 아닙니다).
대부분의 브라우저는 다음과 같이 객체 속성을 반복합니다.
일부 구형 브라우저는 카테고리 #1과 #2를 결합하여 삽입 순서에 따라 모든 키를 반복합니다. 키가 정수로 해석될 가능성이 있는 경우 특정 반복 순서에 의존하지 않는 것이 가장 좋습니다.
현재 언어 사양(ES2015 기준) 양의 정수(예: "7" 또는 "99")로 해석되는 키를 제외하고 삽입 순서가 유지됩니다. 이 경우 브라우저는 다르게 동작합니다. 예를 들어 Chrome/V8은 키가 숫자로 해석될 때 삽입 순서를 고려하지 않습니다.
이전 언어 사양(ES2015 이전): 반복 순서는 기술적으로 정의되지 않았지만 모든 주요 브라우저는 ES2015 동작을 준수합니다.
ES2015 동작은 기존 동작에 의해 구동되는 언어 사양의 좋은 예이며 그 반대가 아닙니다. 이전 버전과의 호환성 사고방식을 더 깊이 이해하려면 Chrome의 반복 순서 디자인 결정 뒤에 있는 동작을 자세히 설명하는 Chrome 버그인 http://code.google.com/p/v8/issues/detail?id=164를 참조하세요. 버그 보고서에 대한 (다소 독선적인) 의견 중 하나에 따르면:
P粉5415653222023-10-13 14:55:26
ES2015부터 객체의 반복 순서는 특정 규칙 집합을 따르지만 (항상) 삽입 순서를 따르지는 않습니다. 간단히 말해서, 반복 순서는 문자열 키의 삽입 순서와 숫자형 키의 오름차순의 조합입니다.
으아악배열이나 Map< /code> 객체
可能是实现此目的的更好方法。 Map< /code> object
Map
与 Object
를 사용하는 것이 이를 달성하는 더 좋은 방법일 수 있습니다. Map
및 Object
는 예외 없이 삽입 순서대로 키 반복 을 보장합니다.
ES2015 이전에는 객체의 속성 순서가 전혀 보장되지 않았습니다. 객체의 정의는 ECMAScript 3rd Edition(pdf)에서 유래합니다.