title: Ways to extend Array object in javascript
body: <p>i try to extend Array object in javascript with some user friendly methods like Array.Add() instead Array.push() etc...</p>
  
  <p>i implement 3 ways to do this.
  unfortunetly the 3rd way is not working and i want to ask why? and how to do it work.</p>
  
  <pre><code>//------------- 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
  </code></pre>
  
  <p>in 3rd way i want to extend the Array object internally Array3 class.
  How to do this so not to get "push is not a function" and "undefined"?</p>
  
  <p>Here i add a 4th way.</p>
  
  <pre><code>//------------- 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]);
  </code></pre>
  
  <p>Here again i have to use prototype.
  I hoped to avoid to use extra lines outside class constructor as Array4.prototype.
  I wanted to have a compact defined class with all pieces in one place. 
  But i think i cant do it otherwise.</p>