2015-11-10 65 views
1

我試圖向後推進數組方法push,pull,shift,unshift,但我似乎無法弄清楚如何a)構造它b)調用它。我怎麼能這樣做?這裏是條件:如何重新創建數組方法?

返回一個空的數組對象。此對象應具有以下方法 :push(val)將val添加到數組的末尾 pop()從結尾刪除一個值並返回該值unshift(val)將val添加到數組的開頭shift()將刪除 開始一個值,並將其這一問題的目標,是扭轉 工程師陣列的方法實際上是在做什麼,並返回一個對象 有那些方法

這是我最初以爲它看起來應該喜歡。由同一陣列中的值的長度爲您指定的位置數組

function YourArray() { 
    this.arr = []; 
    this.index = 0; 
} 

YourArray.prototype.push = function(value) { 
    this.arr[ this.index++ ] = value; 
    return this; 
} 

var arr = new YourArray(); 

arr.push('foo'); 

回答

2

你可以使用原型。

這是原型爲推:

Array.prototype.push = function(element) { 
    this[this.length] = element; 
}; 

,這是pop方法:

Array.prototype.pop = function() { 
    var key = this.stack.pop(); 
    var prop = this.object[key]; 
    delete this.object[key]; 
    return prop; 
}; 

你可以通過改變原型的名字讓你自己的方法。 推mypush或sthing

實例爲您推送功能createArray:

this.push = function pushValue(value) { 
    this.arr[this.arr.length] = value; 
}; 
1
function NewArray() { 
    this.array = []; 
}; /* Class */ 

NewArray.prototype.push = function(data) { 
    this.array.push(data); 
} /* Method */ 
/* You should use prototypes, because all methods will became common, and if you are created methods like this.pop = function(){} then any instance will copy this functions */ 


var n = new NewArray(); 
n.push(2); 
console.log(n); 

Advantages of using prototype, vs defining methods straight in the constructor?

1

您可以重新推法:像這樣 -

function createArray() { 
    //CODE HERE 

    this.push = function Push(value){ 
       if(index >= 0){ 
       Mainarray[index++]=value;} 
       }; 

    this.pop = function(){ 
       if(index >= 0){ 
        index--; 
       return Mainarray[index]; 
       } 
       else{ 
        // display message of Empty Array 
        console.log('Error: Item is not array'); 
       } 
       }; 

    this.unshift = function(){return ;}; 
}