class Queue {
  constructor() {
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }
  
  size() {
    if (this.storage[this.rear] === undefined) {
      return 0;
    } else {
      return this.rear - this.rear + 1;
    }
  }
  
  add(value) {
    if (this.size() === 0) {
      this.storage['0'] = value;
    } else {
      this.rear += 1;
      this.storage[this.rear] = value;
    }
  }
  
  popleft() {
    let temp;
    if (this.front === this.rear) {
      temp = this.storage[this.front];
      delete this.storage[this.front];
      this.front = 0;
      this.rear = 0;
    } else {
      temp = this.storage[this.front];
      delete this.storage[this.front];
      this.front += 1;
    }
    return temp;
  }
}

큐를 만드는 기본적인 클래스 입니다.

 여기에서 제가 밑줄 쳐놓은 부분을 보면 객체의 주소(정확한 표현을 모르겠습니다 죄송합니다 ㅠㅠ)를 숫자 0 이 아닌 문자열 '0' 으로 주고 있음을 알 수 있습니다.


그 이유에 대해서 이 글의 작성자 분은 '자바스크립트 객체 Object는 키 값으로 오직 문자열과 Symbol만 허용하기 때문' 이라는 말씀을 하셨는데... 제가 어떤 말인지 잘 이해가 되지 않아서요. 객체의 주소는 숫자 값을 갖는게 안된다는 말씀인가요?


또 이 질문을 드리는 이유는 초록 배경 부분을 보면 여기에선 또 그냥 0을 주소 값으로 주고 있거든요. 이것이 storage[this.front] = storage['0'] 가 성립한다는 말인지...



아직 js 를 배우는 중이다보니 모르는게 많습니다. 제가 설명이 부족한 부분이 있다면 말씀해주시면 감사하겠습니다.


코드 출처: https://velog.io/@longroadhome/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-JS%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%98%EB%8A%94-.%ED%81%90-Queue