Получать уведомления об изменениях ссылок в 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.

Другие вопросы по тегам