Способы расширения объекта Array в javascript

я пытаюсь расширить объект Array в javascript с помощью некоторых удобных для пользователя методов, таких как Array.Add ()вместо Array.push ()и т. д.

Я реализую 3 способа сделать это. к сожалению, 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. Как это сделать, чтобы не получить "push не является функцией" и "undefined"?

Здесь я добавляю 4-й способ.

//------------- 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. Я хотел иметь компактный определенный класс со всеми частями в одном месте. Но я думаю, что я не могу поступить иначе.

38
задан demosthenes 5 July 2012 в 08:04
поделиться