• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

2: 38

21.11.04 17:37 작성 조회수 125

0

 
enum 타입으로 정의된 Fruit 은 객체로 존재한다고 하셨는데, 어째서 5번째 "인덱스" 를 알수 있다고 하신건가요?
자바스크립트에서는 배열에서 인덱스를 알려면 당연히 '[ ]' 기호를 사용해서 인덱스에 접근할수 있고,
자바스크립트에서의 객체의 인덱스를 알려면 함수의 인수에 '...' 를 사용해서 객체를 받아오고, 해당 객체를 함수 내부에서 콘솔로그로
출력해보면 배열안에 해당 객체가 들어있는 것을 알수 있기 때문에 "인덱스" 라는 것에 접근할수 있는 것으로 알고 있습니다.
const obj = {
  name: 'james',
  age: 20
}

function f1(...arg){
  console.log(arg); // [ { name: 'james', age: 20 } ]
  console.log(arg[0]); // { name: 'james', age: 20 }
}
f1(obj)


그런데 enum 타입으로 정의된 변수 Fruit 은 어떻게 해서 "인덱스" 로 접근이 가능하게 되는 것인가요?

말씀하신 코드를 (Fruit[5] ) 출력해보지 않고 보기만 하면 Fruit 은 배열인것인거고, 5번째 요소가 존재하는걸로 이해하게 되어서

Fruit 는 배열인것이고, Fruit 라는 배열안에 요소가 5개가 들어가있는 것으로 이해가 되서요....

현재 enum 타입으로 정의된 Fruit 내부의 요소는 총 3개인데... 제가 잘못 이해하고 있는 걸까요?

답변 1

답변을 작성해보세요.

0

안녕하세요
제가 '인덱스'라고 말하면서 헷갈리게 해드렸네요
Fruit 은 배열이 아니고 객체입니다
Fruit 객체는 아래 6개의 속성을 갖게 됩니다
'Apple', 'Banana', 'Orange', '0', '5', '6' 

컴파일된 코드를 보면 Fruit 은 아래처럼 초기화되고 있습니다
var Fruit = {};
Fruit['Apple'] = 0;
Fruit['Banana'] = 5;
Fruit['Orange'] = 6;
Fruit[0] = 'Apple';
Fruit[5] = 'Banana';
Fruit[6] = 'Orange';