1. 程式人生 > 實用技巧 >es6 Proxy 簡寫 Vue3.0 的雙向繫結

es6 Proxy 簡寫 Vue3.0 的雙向繫結

小小實習生,大佬請賜教

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" id="input">
    <p 
id="text">hello world</p> <script> let input = document.getElementById('input'); let text = document.getElementById('text'); let obj = {}; // Proxy 第一個引數 要攔截的目標物件,這裡指 obj, 第二個引數 處理程式物件 這裡直接 {} 並定義 get、set 捕獲器 let proxy = new Proxy(obj, {
// get 第一個引數 目標物件,這裡指 obj,第二個引數 屬性,這裡指 val get(target, property){ return target[property]; // 紅寶書上說 返回值無限制 }, // set 前兩個引數 同 get, 第三個引數是 要設定的值 set(target, property, value){ target[property] = value; // 相當於 obj[val] = 5; text.innerText
= target[property]; // 把值 賦值給 text return; // set 的返回值 true 表示成功 false 表示失敗 } }) /* 預設先把 text 值 賦值給 input */ proxy.val = text.innerText; input.value = proxy.val; // input 輸入時觸發 input.addEventListener('input', function(){ proxy.val = this.value; // 給 proxy.val 賦值 會呼叫 set 捕獲器 }) </script> </body> </html>