만든 순서와 나열된 순서를 따로 기록합니다
가상 자료 카드의 이름을 name, 10, 2 순서로 자바스크립트 객체에 넣었다고 합시다. AI가 ‘객체는 입력 순서를 유지한다’고만 설명하면 Object.keys의 첫 결과를 name으로 예상할 수 있습니다. 실제로 이 활동에서 나오는 순서는 "2", "10", "name"입니다. 값이 사라진 것이 아니라 키를 나열하는 규칙이 작동했습니다.
키는 속성의 이름입니다. 오브젝트 키즈(Object.keys, 객체 키 나열)는 객체 자체가 가진, 나열 가능한 문자열 키를 배열로 돌려줍니다. 활동에서는 새 일반 객체를 만들고 단순 대입만 하므로 모든 선택 키가 이 조건에 해당합니다. 화면에는 대입 기록과 반환 배열을 따로 표시합니다.
배열 인덱스인 키가 앞에 옵니다
이 글의 "2"와 "10"은 배열 인덱스로 분류되는 문자열 키입니다. 일반 객체의 키 나열에서는 이런 키가 숫자 오름차순으로 먼저 나옵니다. 그다음에는 나머지 문자열 키가 속성을 만든 순서로 이어집니다. 객체 자체가 배열이어야 이 규칙이 적용되는 것은 아닙니다.
"01"은 숫자 1로 바꿀 수 있어 보여도 "1"과 표기가 다릅니다. 이 활동에서는 배열 인덱스 키로 분류되지 않아 일반 문자열 키 쪽에 남습니다. -1 모양의 키도 같습니다. ‘숫자로 바꿀 수 있는가’와 ‘배열 인덱스 키인가’를 같은 조건으로 다루면 나열 순서를 잘못 예측합니다.
값 갱신과 삭제 후 재생성을 비교합니다
기본 대입 순서를 name → 10 → 2 → note로 정하면 결과는 2 → 10 → name → note입니다. name의 값만 갱신해도 그 속성이 처음 만들어진 순서는 바뀌지 않습니다. 반면 name을 삭제한 다음 다시 만들면 일반 문자열 키 중 note 뒤로 가서 2 → 10 → note → name이 됩니다.
같은 조작을 숫자 키 2에 해도 마지막에 나열되지는 않습니다. 다시 생긴 2는 여전히 배열 인덱스이므로 숫자 오름차순 구간의 앞쪽으로 돌아옵니다. 활동에서 작업만 바꾸어 이 차이를 확인하세요. 두 결과를 비교할 때에는 값 갱신인지 삭제·재생성인지도 함께 남겨야 합니다.
화면 순서를 사건 발생 기록으로 역산하지 않습니다
AI가 Object.keys의 순서를 보고 자료가 도착한 순서를 복원하면 2가 10보다 먼저 입력됐다고 잘못 말할 수 있습니다. 사건 순서가 필요하면 입력 기록을 별도 배열에 보존해야 합니다. 이 활동도 그 배열과 객체의 키 목록을 구별합니다. 객체의 화면 표시 하나만으로 실제 이력을 확정하지 않습니다.
이 실험은 일반 객체의 자체 문자열 키만 다룹니다. 심벌(Symbol, 별도 종류의 키), 상속된 속성, 나열 불가능한 속성, 프록시처럼 동작을 바꾼 객체는 활동 범위 밖입니다. JSON 원문에서 이름이 쓰인 순서나 다른 언어의 사전 구조 규칙을 이 결과와 자동으로 같다고 보면 안 됩니다. AI 호출 없이 브라우저의 실제 Object.keys를 실행합니다.

