我嘗試在JavaScript擴展Array對象有一些用戶友好的方法,如Array.Add()代替的Array.push()等數組對象...方式來擴展在JavaScript
我實現了3種方式來做到這一點。 不幸的是,第三種方式不工作,我想問爲什麼?以及如何做到這一點。
//------------- 1st way
Array.prototype.Add=function(element){
this.push(element);
};
var list1 = new Array();
list1.Add("Hello world");
alert(list1[0]);
//------------- 2nd way
function Array2() {
//some other properties and methods
};
Array2.prototype = new Array;
Array2.prototype.Add = function(element){
this.push(element);
};
var list2 = new Array2;
list2.Add(123);
alert(list2[0]);
//------------- 3rd way
function Array3() {
this.prototype = new Array;
this.Add = function(element){
this.push(element);
};
};
var list3 = new Array3;
list3.Add(456); //push is not a function
alert(list3[0]); // undefined
在第三種方式我想擴展Array對象內部的Array3類。 如何做到這一點,以免得到「推動不是一個功能」和「未定義」?
這裏我添加了第四種方式。
//------------- 4th way
function Array4() {
//some other properties and methods
this.Add = function(element){
this.push(element);
};
};
Array4.prototype = new Array();
var list4 = new Array4();
list4.Add(789);
alert(list4[0]);
在這裏再次我必須使用原型。 我希望避免在類構造函數之外使用額外的行作爲Array4.prototype。 我想在一個地方有一個緊湊的定義類與所有作品。 但我想我不能這樣做,否則。
如果你添加一個方法到數組,你將破壞數組的foreach() – SpacedMonkey
你看過咖啡腳本嗎?我將用示例更新我的答案 – SMathew
我不會像第一個示例中那樣向Array.prototype添加方法。這是一個考驗。我將創建一個將擴展Array對象的類。例如jsArray。 jsArray對象將是數組,但具有更多功能。 – demosthenes