Прокси действительно не заменяют Object.observe (не так ли?)

Предполагается, что прокси-серверы Javascript являются "более общей" заменой для Object.observe, но одна приятная вещь в Object.observe заключается в том, что он позволяет отслеживать непреднамеренные изменения. Например, его можно использовать для удобства отладки устаревшего кода. Прокси, кажется, не функционируют одинаково; они только перехватывают взаимодействия, которые происходят через прокси. Я что-то пропустил?

1 ответ

5 лет спустя ответ - нет. К сожалению, прокси будет отслеживать доступ только к самому прокси, что совершенно бесполезно, когда вам нужно «шпионить» за существующим объектом.

Вы все еще можете попытаться создать прокси из существующего объекта, а затем заменить этот существующий объект прокси, из которого вы только что создали, но это рискованно, поскольку нет гарантии, что вы будете заменять его везде.

Примечание: если мне действительно нужно наблюдать за свойствами объекта, т.е. знать, когда они изменились, я использую этот помощник. Это не простой JS, так как он использует rxjs, но работает довольно хорошо.

использование (машинопись):

      const obj: {key: string} = {key: "value"};
observeProperty$(obj, 'key').subscribe((nextValue)=>console.log(nextValue));

obj.key = "anotherValue"

// console output: "anotherValue"
Другие вопросы по тегам