К сожалению, это not possible to override the []
accessor for javascript arrays. Однако есть еще несколько возможностей:
1) Override the push()
method. Это разумно сделать для отдельного экземпляра массива, но настоятельно рекомендуется, чтобы вы НЕ изменяли Array.prototype.push
, так как это может привести к непредвиденным побочным эффектам в других частях кода javascript.
2) Добавить заказ set()
метод. Опять же, пока вы можете добавить это в основной массив Array, настоятельно рекомендуется, чтобы вы этого не сделали. Функционирование jsFiddle: http://jsfiddle.net/dmillz/RUcBM/
arr.set = function (index, value) {
var oldValue = this[index];
this[index] = value;
$.event.trigger("array-change", [this, index, oldValue, value]); // jQuery event trigger, but feel free to use something else besides jQuery
};
3) (рекомендуется) Создайте свой собственный наблюдаемый класс, который опирается на массив, или просто использовать библиотеку, которая обеспечивает наблюдаемые объекты, такие как Knockout's Observable Array, Ember's Observable или Backbone's Model