https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Object/watchJavaScript: Mozilla Просматривайте() функциональность для всех свойств объекта (возможно, кросс-браузер)
Просматривайте (метод) делает это короче: «Часы для свойства, чтобы быть присвоено значение и выполняет функцию, когда это происходит ».
Длинная описательная форма: «Часы для присвоения собственности с именем prop в этом объекте, вызывающий обработчик (prop, oldval, newval), когда установлен prop и сохраняется возвращаемое значение в этом свойстве. Точка наблюдения может фильтровать (или аннулировать) присвоение значения, возвращая измененный newval (или возвращая oldval). "
Существует вопрос для заставить его работать во всех браузерах здесь: Object.watch() for all browsers?
Ищу что-то похожее на это. То, что я ищу, - это метод, который я могу использовать, чтобы соответствовать этой спецификации: «Часы для назначения любому свойству в этом объекте и выполняет функцию, когда это происходит». Основное различие заключается в том, что это любое свойство и просто любое конкретное свойство.
Может кто-нибудь создать такой метод или если они знают, что такой метод уже существует, ссылайтесь на него? Было бы полезно, если бы он работал во всех браузерах (минус IE или минус IE8, если соответствует IE9)
Редактировать: Для примера, что я имею в виду, я покажу, для чего он нужен.
var DiscreteLine = function (leftBound, length){
this.positive = [];
this.negative = [];
this.length = length;
this.leftBound = leftBound;
this.rightBound = leftBound + length
if (this.leftBound < 0){
this.negative.length = (leftBound * -1) + 1;
} else {
this.negative.length = 0;
}
if (this.rightBound >= 0){
this.positive.length = rightBound + 1;
} else {
this.positive.length = 0;
}
this.watchObject = new ObjectWatcher(handler(prop, oldval, newval){ /* some stuff */ });
}
Затем, когда, например, если кто-то сделал следующее:
theLine = new DiscreteLine(-2, 4);
theLine[-8] = 10;
Обработчик бы назвать, с аргументами ("-8", неопределенных, 10). (Что бы закончилось, так это то, что скрипт автоматически пересчитает свойства leftBound и length (например, как автоматически обновляет свойство длины массива).
Я не вижу, как можно создать наблюдателя обо всех свойствах объекта с использованием этого метода. Кроме того, Firefox 4.0 будет поддерживать его, как минимум. Это позволяет изменять ключевые аспекты свойства (что-то полезное для меня в любом случае), но не для просмотра объекта. – Havvy