cascade: Eigenes Object soll Array enthalten

Tach und gutes neues :-)

Ich habe ein eigenes objekt erstellt, was in einem element auch einen Array enthält. Leider "vergisst" das objekt jedesmal beim hinzufügen über "add" den bisherigen array inhalt. was mache ich falsch?

hier der code:

function menuItem(a_title, a_url, a_script) {
  this.items = new Array();
  this.title = a_title;
  this.url = a_url;
  this.script = a_script;
  this.add = function (a_item) {
   this.items[length] = a_item;
   alert ("arraylength=" + this.items.length);
 }
 this.size = function () {
   return this.items.length;
 }
  this.hasItem = function (a_itemName) {
    for (var i=0; i < this.items.length; i++) {
      if (this.items[i].title == a_itemName) {
        return this.items[i];
        break;
      }
    }
    return false;
  }
 this.hasItems = function() {
   if (this.items.length > 0) {
     return true;
   }
   else {
     return false;
   }
  }
  this.getItems = function() {
   if (this.hasItems) {
     return this.items;
   }
  }
}

  1. this.add = function (a_item) {
       this.items[length] = a_item;

    this.items[this.items.length] = a_item;
    oder
    this.items.push(a_item);

    Struppi.

    1. OH MANN :-D

      Heut bin ich blind :-)

      DAAANKE

      this.add = function (a_item) {
         this.items[length] = a_item;

      this.items[this.items.length] = a_item;
      oder
      this.items.push(a_item);

      Struppi.

    2. this.items[this.items.length] = a_item;
      oder
      this.items.push(a_item);

      Meiner Erfahrung nach ist die erste Fassung noch tauglicher als die (elegantere) zweite: Ich bin mit push() vor Jahren gehörig auf die Nase gefallen, weil nicht alle Browser pushen wie sie sollen. Veränderungen an Arrays nehme ich, wo möglich, immer mithilfe ihrer Länge vor.

      Herzlich, twb