Möglichkeiten, Array-Objekt in Javascript zu erweitern

Ich versuche, Array-Objekt in Javascript mit einigen benutzerfreundlichen Methoden wie Array.Add () statt Array.push () usw. zu erweitern.

Ich implementiere 3 Möglichkeiten, um dies zu tun. Leider funktioniert der 3. Weg nicht und ich möchte fragen, warum? und wie es geht.

//------------- 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

Auf die dritte Art und Weise möchte ich das Array-Objekt intern Array3-Klasse erweitern. Wie kann man das machen, um nicht "push is not a function" und "undefined" zu bekommen?

Hier füge ich einen 4. Weg hinzu.

//------------- 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]);

Auch hier muss ich Prototyp verwenden. Ich hoffte zu vermeiden, zusätzliche Zeilen außerhalb des Klassenkonstruktors als Array4.prototype zu verwenden. Ich wollte eine kompakte definierte Klasse mit allen Stücken an einem Ort haben. Aber ich glaube, ich kann es nicht anders machen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage