Este artigo traz a você conhecimento relevante sobre JavaScript. Ele apresenta principalmente a visão simples baseada em dados do objeto proxy JS. Amigos necessitados podem consultá-lo. será útil para todos. 
Entrada front-end (vue) para curso de domínio: entre no aprendizado
JQuery é orientado a eventos, ou seja, quando um dado está associado a um determinado conteúdo do DOM, preciso operar o DOM para sincronização após a alteração dos dados:
<div id="dados">dados</div>
var dados = "dados"
//Os dados foram alterados através de algum tipo de evento data = "new data"
$("#dados").texto = dadosEm interações simples, esse método ainda parece conveniente, mas quando as interações se tornarem enormes, o código ficará inchado.
Quando eu estava prestes a me formar, Angular, Vue e React estavam surgindo, e descobrimos uma nova forma - orientada a dados. Ou seja, por meio da "ligação" de DOM e dados, podemos modificar diretamente os dados, e o conteúdo do DOM pode ser modificado diretamente. Houve uma mudança.
<div>{{dados}}</div>var dados = "dados" // ...vinculado de alguma forma data = "novos dados"
O conteúdo do DOM torna-se diretamente novos dados. É muito conveniente de usar e o código é relativamente conciso. Parecia mágico na época.
Diferentes estruturas baseadas em dados têm princípios e processos vinculativos diferentes e são todas relativamente complexas. Mas hoje vamos simplificá-lo e usar o objeto Proxy do JS para implementar a movimentação de dados. (A propósito, os dados responsivos do Vue3 usam este princípio. Claro, será muito mais complicado do que o exemplo de hoje)
O objeto Proxy é usado para criar um proxy para um objeto para implementar a interceptação e personalização de operações básicas (como pesquisa de atributos, atribuição, enumeração, chamada de função, etc.). Os métodos de uso específicos são:
novo Proxy (objeto a ser proxy, objeto de evento do proxy)
Os seguintes eventos podem ser delegados:
| evento | descrever |
|---|---|
| pegar | Ler propriedades |
| definir | Definir propriedades |
| excluir | excluir operador |
| próprias chaves | Método getWonPropertyNames e getOwnPropertySymbols |
| construir | novo operador |
| definirPropriedade | Método defineProperty |
| getOwnPropertyDescriptor | Método getOwnPropertyDescriptor |
| prevenirExtensões | método preventExtensions |
| éExtensível | Método isExtensible |
| setPrototypeOf | Método setPrototypeOf (ou seja, configuração .__proto__) |
| getPrototypeOf | Método getPrototypeOf (ou seja, pegue .__proto__) |
Agora que entendemos o uso básico do Proxy, podemos usá-lo para fazer proxy do setter do objeto para implementar a unidade de dados.
Primeiro defina um elemento DOM com o mesmo ID dos dados:
<div id="primeiroNome"></div> <div id="idade"></div>
Defina um proxy Proxy para data , faça proxy de seu setter e opere o DOM nele:
var dados = {
primeiro nome: "",
idade: 0
}
var p_dados = novo Proxy(dados, {
definir: função (obj, prop, newval) {
document.getElementById(prop).innerText = newval;
obj[prop] = newval; // Não se esqueça de implementar a lógica original return true; // Configurando os requisitos do proxy, retorne true após o processamento bem-sucedido;
}
}) Em seguida, defina o valor inicial e defina as interações relevantes e observe que o agente p_data é operado em vez de data :
p_data.firstName = "O nome será exibido em dois segundos..."
p_dados.idade = 25
setTimeout(() => {
p_data.firstName = "Lin Yuchen"
}, 2000)
document.getElementById("crescer").onclick = function() {
p_data.age++
} Desta forma, a movimentação de dados é realizada. Contanto que o valor do atributo p_data seja modificado arbitrariamente, o conteúdo do DOM pode ser alterado diretamente:

JS
var dados = {
primeiro nome: "",
idade: 0
}
var p_dados = novo Proxy(dados, {
definir: função (obj, prop, newval) {
document.getElementById(prop).innerText = newval;
obj[prop] = newval;
retornar verdadeiro
}
})
p_data.firstName = "O nome será exibido em dois segundos..."
p_dados.idade = 25
setTimeout(() => {
p_data.firstName = "Lin Yuchen"
}, 2000)
document.getElementById("crescer").onclick = function() {
p_data.age++
}