2012-04-11 2 views
0

У меня есть функция addAfter и addBefore, которая добавляет новый элемент в массив. Этот массив - это мое хранилище, которое используют другие функции. В основном я храню объекты низкого уровня, которые определяют ячейки таблицы. После добавления элемента в массив я должен вставить значение свойства html элемента в строку таблицы.Array.Splice prototype

Есть ли способ прототипировать мой массив для обработки обеих операций, вместо того чтобы мне нужно удваивать нагрузку при каждом добавлении или добавлении перед тем, как отключить прототип собственного массива?

var bays=[]; 

addAfter: function (b, n) { 
      for (var i = 0, ii, len = bays.length; i < len; i++) { 
       ii = i + 1; if (ii == n) { 
        bays.splice(ii, 0, b); 
        var newCell = canvsTrBay.insertCell(ii); 
        newCell.outerHTML = b._html; 
       }; 
      }; 
      this.build(); 
     } 

Можно ли сделать что-то вроде:

bays.prototype.add=function(b,n,isAfter){ 

     for (var i = 0, ii, len = bays.length; i < len; i++) { 
        ii =(isAfter? (i + 1):(n>0?i-1:0); 
        if (ii == n) { 
         bays.splice(ii, 0, b); 
         var newCell = canvsTrBay.insertCell(ii); 
         newCell.outerHTML = b._html; 
        }; 
       }; 
       this.build(); 
    } 

ответ

1

Вы можете добавить его непосредственно к самому объекту:

bays.add = ...; 
+0

нормально, я, наконец, получил то, что вы» re ссылаясь на. –

Смежные вопросы