![](http://ac.namu.la/20240401sac/b799d04d2922ba9bc040dd242e6552ef08f8c084e1820047054830428037bcbf.jpg?expires=1719795600&key=lk3MuS6ps91LUQeGQrFOqw)
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 를 배우는 중이다보니 모르는게 많습니다. 제가 설명이 부족한 부분이 있다면 말씀해주시면 감사하겠습니다.