Queue.prototype.Dequeue = function()
{
        var element = undefined;
        if (this.queue.length)

element = this.queue[this.queueSpace];
if (++this.queueSpace * 2 >= this.queue.length)//???????????
{
this.queue = this.queue.slice(this.queueSpace);
this.queueSpace=0;
}
}
        return element;
}

解决方案 »

  1.   

    前面还有初始化:
    this.queue = [];
    this.queueSpace = 0;
      

  2.   

    当this.queueSpace的直大于或者等于this.queue长度一半的时候
    窃取this.queue 的后一半(但似乎是长度为单数的时候,this.queue长度为偶数的时候后一半差第一个)
    for example function Queue(){
    this.queue = []; 
    this.queueSpace = 0;
    };
    Queue.prototype.Dequeue = function(){ 
    var element = undefined; 
    if (this.queue.length) 

    element = this.queue[this.queueSpace]; 
    if (++this.queueSpace * 2 >= this.queue.length)//??????????? 

    this.queue = this.queue.slice(this.queueSpace);
    this.queueSpace=0; 


    return element; 
    };
    (function(ss){
    ss.queue=[1,2,3,4,5,6,7,8,9,10,11]
    ss.queueSpace = 5;
    ss.Dequeue();
    alert(ss.queue);
    })(new Queue());