ํ๋ฅผ ๊ฐ์ฒด๋ก ์์ฑํ๊ณ prorotype์ ์ฌ์ฉํด์ ๋ฉ์๋๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ๋๋ถ๋ถ ๋ค ๋์ฒด ๊ฐ๋ฅํด์ ๋ฐ๋ก ๊ตฌํํด์ ์ฌ์ฉํ์ง ์๋ ํธ์ด์๋๋ฐ
์กฐ๊ธ ํน์ดํ ์ ์ด getBuffer()๊ฐ์ด ๊ฐ์ฒด ๋ด ๋ฐ์ดํฐ์
์ ๋ฐํ(getter)ํ๋ ๋ฉ์๋๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
// getBuffer(): ๊ฐ์ฒด ๋ด ๋ฐ์ดํฐ ์
๋ฐํ
Queue.prototype.getBuffer = function () {
return this.array.slice();
};
๊ฐ์ฒด๊ฐ ๋ฐฐ์ด๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ๋ฐฐ์ด๋ง ๊บผ๋ด์ฃผ๋ ค๊ณ ์ด ๋ฉ์๋๊ฐ ํ์ํ๊ฒ ๋์๋ค.
๊ทธ๋ผ ๋ค๋ฅธ ํ๋กํผํฐ๋ค์ด ์ ํ์ํ๊ฐ? ๋์ค์ ๋ณด๋ฉด ํ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ๋๋ค. ๋ฐฐ์ด๋ก ํ๋ฅผ ๋์ฒดํด์ ์ฌ์ฉํ ๋ ์ฑ๋ฅ์ด ๊ต์ฅํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ๋ง ์๊ฐํด๋ด๋ ๋งจ์์ ์์๋ฅผ ๊บผ๋ด๋๋ฐ ๋ฐฐ์ด์ ๋๋จธ์ง ์์๋ค์ ๋๊ฑฐ ์ด๋์์ผ์ผํ๋ ์ฐ์ฐ์ด ์๊ธด๋ค.
ย
๋ณดํต dequeue๋ฅผ shift() ๋ฉ์๋๋ก ๊ตฌํํ๊ณค ํ๋๋ฐ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ค ์ ์๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์ ์งํ๊ณ ๋ณํํ์ง ์์ผ๋ฉด์ delete๋ก ์์๊ฐ๋ง ์ญ์ ์ํค๊ณ head์ tail๋ก ์์๊ฐ ์๋ ๋ฒ์๋ง ์ก์์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ด ๋ฐฉ์์ ๋ฐ๋ผ enqueue๋ push() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์์ tail ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํด ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ด ๋๋ค.
Queue.prototype.enqueue = function (element) {
return (this.array[this.tail++] = element);
};
Queue.prototype.dequeue = function () {
if (this.tail === this.head) return undefined;
let element = this.array[this.head];
let queue4 = new Queue([1, 2]);
console.log(queue4);
queue4.enqueue(3);
queue4.enqueue(4);
console.log(queue4);
console.log(queue4.dequeue());
console.log(queue4.dequeue());
console.log(queue4);
ย
enqueue์ dequeue์์ ์ถ๊ฐ๋๋ ๋ฐฉ์์ ๋ํด์๋ง ์ ์ดํดํ๋ฉด ์ข๋ค.
ย
ย