在 Javascript 中创建队列
Creating a queue in Javascript
我正在 javascript 中编写一个队列,但我不确定实现它的最佳方法是什么:
选项 1:
做类似...
var queue = []
...并使用 push/shift 函数 enqueue/dequeue.
选项 2:
像这样创建一个对象:
var myQueue = new function() {
this.queue = [];
this.enqueue(x) = function() { this.queue.push(x) };
this.dequeue() = function { this.queue.shift() };
}
选项 3:
您还有什么建议吗?
我可以看到使用选项 2 而不是 1 的唯一优势是,如果我想创建一个独特的方法来调用 myQueue(例如 dequeueTwoElements),我将能够这样做。
想法?
我认为没有最好的实现方法。将队列包装在自定义对象中将提供封装和实现隐藏的所有好处。
假设您出于某种原因想要更改 myQueue
以在内部使用对象而不是数组,它允许您这样做,而不会弄乱它的任何客户端。
此外,我认为新接触您的代码的人会更容易明确地理解您的队列确实是一个队列。这是因为它们有一个函数构造函数定义要查看,enqueue
和 dequeue
函数比传递一个名为 queue
的数组并在其上调用 js 数组方法更明确。
我正在 javascript 中编写一个队列,但我不确定实现它的最佳方法是什么:
选项 1:
做类似...
var queue = []
...并使用 push/shift 函数 enqueue/dequeue.
选项 2:
像这样创建一个对象:
var myQueue = new function() {
this.queue = [];
this.enqueue(x) = function() { this.queue.push(x) };
this.dequeue() = function { this.queue.shift() };
}
选项 3:
您还有什么建议吗?
我可以看到使用选项 2 而不是 1 的唯一优势是,如果我想创建一个独特的方法来调用 myQueue(例如 dequeueTwoElements),我将能够这样做。
想法?
我认为没有最好的实现方法。将队列包装在自定义对象中将提供封装和实现隐藏的所有好处。
假设您出于某种原因想要更改 myQueue
以在内部使用对象而不是数组,它允许您这样做,而不会弄乱它的任何客户端。
此外,我认为新接触您的代码的人会更容易明确地理解您的队列确实是一个队列。这是因为它们有一个函数构造函数定义要查看,enqueue
和 dequeue
函数比传递一个名为 queue
的数组并在其上调用 js 数组方法更明确。