Получать уведомления об изменениях ссылок в JavaScript
Есть ли способ получить уведомление об изменении ссылки?
Я чувствую, что мне нужно понять, что я имею в виду:
var a = { aa: 1 };
a = { aa: "allowed" }; // `a`'s reference was modified
a.aa = "foo"; // `a` was mutated, but the reference was not modified. Don't care.
Меня интересует именно это изменение ссылки. В Swift это didSet
блок. Я хотел бы наблюдать изменения в ссылке, что a
указывает на.
Полный пример:
var reel = [];
function print(message) {
reel = reel.concat([message]); // non-mutating push changes "reel" reference to this new object.
}
Object.SOME_FUNCTION(reel, onChangeReel); // not a real function
function onChangeReel() { /* update the DOM */ }
2 ответа
Под "изменением ссылки" вы, похоже, подразумеваете изменение значения переменной.
Нет, не существует существующего или предлагаемого способа сделать это.
Что можно посмотреть - либо с умирающим Object.observe
Предложение или с прокси, это изменения в стоимости имущества.
По словам Адама Кляйна (одного из разработчиков этой технологии), размещенного здесь:
После долгих обсуждений с заинтересованными сторонами я планирую отозвать предложение Object.observe из TC39 (где он в настоящее время находится на стадии 2 в процессе спецификации ES), и надеюсь удалить поддержку из V8 к концу года (функция используется на 0,0169% просмотров страниц Chrome, в соответствии с chromestatus.com).
Разработчикам, которые экспериментировали с Oo и ищут путь перехода, рассмотрите возможность использования полифилла, такого как MaxArt2501 / object-наблюдаем, или библиотеки-обёртки, например, Polymer / наблюдаем-js.