Можно ли использовать setter/getter для отправки события каждый раз при изменении свойства объекта? Изменил, Я имею в виду участника добавил, удалил или обновил.Использовать setter для отправки события при изменении свойства объекта
Ниже приведен нерабочий пример того, чего я пытаюсь достичь. Каждый раз, когда член добавляется к instance._dataStore
, instance
должен инициировать событие.
var EventDispatcherObject = require("EventDispatcherObject");
var instance = new EventDispatcherObject();
//This is a non-working attempt to use setter to dispatch event
Object.defineProperty(instance, "_dataStore", {
get : function() {
return this_dataStore;
},
set : function(data) {
this._dataStore[data] = data;
this.dispatchEvent("_dataStoreChanged");
}
});
var data = [{id: "A", data: "abc"}, {id: "B", data: "def"}, {id: "C", data: "ghi"}];
for (var i=0; i < data.length; i++) {
instance._dataStore[data[i].id] = data[i];
}
//should return:
console.log(instance._dataStore);
>>> {
A : {id: "A", data: "abc"},
B : {id: "B", data: "def"},
C : {id: "C", data: "ghi"}
}
console.log(instance._dataStore[A]);
>>> {id: "A", data "abc"}
На самом деле это нерабочим пример возвращает эту ошибку:
InternalError: too much recursion: return this._dataStore;
Да, это возможно. Что касается вашего примера не работает (помимо недействительного синтаксиса из-за отсутствия конечной скобки для getter и того факта, что нет такого (встроенного) класса с именем «EventDispatcherObject»)? –
ok ... см. Редактировать ... –