"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript 객체 속성 순서의 비밀

JavaScript 객체 속성 순서의 비밀

2024년 10월 31일에 게시됨
검색:484

최근 누군가 나에게 JavaScript 객체 속성이 반드시 순서가 없고 예측할 수 없느냐고 물었습니다.

JavaScript를 초기에 접한 개발자는 Object.keys() 또는 for...in이 예측할 수 없는 순서의 개체 속성을 반환한다고 대답할 수 있습니다. 그런데 아직도 그런가요?

예상하셨겠지만 이제 따라야 할 규칙이 있습니다.

ECMAScript 2020부터 Object.keys, for...in, Object.getOwnPropertyNames 및 Reflect.ownKeys는 모두 동일한 사양 순서를 따릅니다. 그것들은:

1. 자신의 속성은 숫자 인덱스 오름차순의 배열 인덱스입니다.

The Secrets of JavaScript Object Property Order

배열 인덱스는 표준 숫자 문자열인 문자열 값 속성 키입니다. 그리고 표준 숫자 문자열은 ToString에 의해 생성되는 숫자 또는 문자열 "-0"의 문자열 표현입니다. 예를 들어 "012"는 표준 숫자 문자열이 아님이지만 "12"는 문자열입니다.

2. 속성 생성의 오름차순으로 다른 자체 문자열 속성

The Secrets of JavaScript Object Property Order

위 코드는 이벤트 루프의 지식 포인트를 추가합니다. setTimeout은 비동기 매크로 작업이므로 console.log가 출력될 때 c 속성이 obj에 추가되지 않았습니다.

3. 속성 생성의 오름차순으로 기호 속성을 소유합니다.

The Secrets of JavaScript Object Property Order

Symbol 속성은 속성 생성 시간의 오름차순으로 String 속성과 동일합니다. 그러나 Object.keys, for...in, Object.getOwnPropertyNames 메소드는 객체의 Symbol 속성을 가져올 수 없으며 Reflect.ownKeys 및 Object.getOwnPropertySymbols는 가져올 수 있습니다.

결론

객체의 속성 키가 위 유형의 조합인 경우 객체의 음수가 아닌 정수 키(열거 가능 및 비열거 가능)가 먼저 배열에 오름차순으로 추가된 다음 문자열 키가 삽입 순서로 추가됩니다. 마지막으로 기호 키가 삽입 순서대로 추가됩니다.

The Secrets of JavaScript Object Property Order

그러나 게재 순서에 크게 의존하는 경우에는 지도가 이를 보장합니다.

이 정보가 도움이 되었다면 웹 개발에 대한 더 유용한 기사와 도구를 보려면 내 뉴스레터를 구독 해 보세요. 읽어주셔서 감사합니다!

릴리스 선언문 이 글은 https://dev.to/zacharylee/the-secrets-of-javascript-object-property-order-4oh4?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3