Эта статья дает вам соответствующие знания о JavaScript. В основном она впервые знакомит вас с простым представлением прокси-объекта JS. Друзья, нуждающиеся в этом, могут обратиться к нему вместе, я надеюсь. будет полезен всем.
Вход в курс повышения квалификации по интерфейсу (vue): введите обучение
JQuery управляется событиями, то есть, когда часть данных связана с определенным содержимым DOM, мне нужно запустить DOM для синхронизации после изменения данных:
данные
вар данные = "данные" //Данные изменились через какое-то событие data="new data" $("#data").text = данные
В простых взаимодействиях этот метод все еще кажется удобным, но как только взаимодействия станут огромными, код раздуется.
Когда я собирался заканчивать учебу, появились Angular, Vue и React, и мы открыли новый способ — управляемый данными. То есть, посредством «связывания» DOM и данных мы можем напрямую изменять данные и. содержимое DOM может быть изменено напрямую. Произошло изменение.
{{data}}
вар данные = "данные" // ...как-то связаны data = "новые данные"
Содержимое DOM напрямую становится новыми данными. Его очень удобно использовать, а код относительно краток. В то время это казалось волшебством.
Различные платформы, управляемые данными, имеют разные принципы и процессы связывания, и все они относительно сложны. Но сегодня мы упростим его и будем использовать объект JS Proxy для реализации накопителя данных. (Кстати, адаптивные данные Vue3 используют этот принцип. Конечно, это будет гораздо сложнее, чем сегодняшний пример)
Объект Proxy используется для создания прокси-сервера объекта для реализации перехвата и настройки основных операций (таких как поиск атрибутов, присвоение, перечисление, вызов функций и т. д.). Конкретные методы использования:
новый прокси (объект для проксирования, объект события прокси)
Можно делегировать следующие события:
событие | описывать |
---|---|
получать | Читать свойства |
набор | Установить свойства |
удалить | удалить оператор |
собственные ключи | метод getWonPropertyNames и getOwnPropertySymbols. |
построить | новый оператор |
определить свойство | метод defineProperty |
getOwnPropertyDescriptor | метод getOwnPropertyDescriptor |
предотвратить расширения | метод предотвращения расширений |
isExtensible | isExtensible метод |
setPrototypeOf | метод setPrototypeOf (то есть установка .__proto__) |
getPrototypeOf | getPrototypeOf (то есть возьмите .__proto__) |
Теперь, когда мы понимаем основы использования прокси, мы можем использовать его для проксирования setter
объекта для реализации диска данных.
Сначала определите элемент DOM с тем же идентификатором, что и данные:
Установите прокси-прокси для data
, проксируйте его setter
и управляйте в нем DOM:
вар данные = { имя: "", возраст: 0 } var p_data = новый прокси (данные, { set: function (obj, prop, newval) { document.getElementById(prop).innerText = newval; obj[prop] = newval; // Не забудьте реализовать исходную логику return true // Требования к прокси-серверу, возвращаем true после успешной обработки; } })
Затем установите начальное значение и установите соответствующие взаимодействия и обратите внимание, что вместо data
работает агент p_data
:
p_data.firstName = "Имя будет отображено через две секунды..." p_data.age = 25 setTimeout(() => { p_data.firstName = "Линь Юйчэнь" }, 2000) document.getElementById("grow").onclick = function() { p_data.age++ }
Таким образом реализуется диск данных. Пока значение атрибута p_data
изменяется произвольно, содержимое DOM может быть изменено напрямую:
JS
вар данные = { имя: "", возраст: 0 } var p_data = новый прокси (данные, { set: function (obj, prop, newval) { document.getElementById(prop).innerText = newval; obj[prop] = newval; вернуть истину } }) p_data.firstName = "Имя будет отображено через две секунды..." p_data.age = 25 setTimeout(() => { p_data.firstName = "Линь Юйчэнь" }, 2000) document.getElementById("grow").onclick = function() { p_data.age++ }