vue2、vue3双向绑定原理,纯html+JavaScript简单demo

官网的解释会比较抽象,还是代码实践才能让人对知识理解得更透彻,以下是简单的小实例。
1.vue2使用的是ES5的Object.defineProperty实现的。
2.vue3使用的是ES6的new Proxy方法。
(可以复制粘贴到本地,运行尝试一下)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ES5ES6绑定</title>
</head>
<body>
<span>ES5 vue2双向绑定简单示例(Object.defineProperty)</span>
<div>
    <input type="text" id='d0'/>
    <span>内容:</span>
    <span id='d1'></span>
</div>

<br/><br/><br/>

<span>ES6 vue3双向绑定简单示例(代理Proxy)</span>
<div>
    <input type="text" id='e0'/>
    <span>内容:</span>
    <span id='e1'></span>
</div>

<script>
    /***ES5 vue2双向绑定简单示例(Object.defineProperty)***/
    let obj = {};//定义一个对象
    Object.defineProperty(obj,"param",{
        get(){
            return "";
        },
        set(v){
            document.getElementById("d1").innerText = v;//截取对象set方法,给元素赋值
        }
    })
    document.getElementById("d0").addEventListener("input",function (e){
        obj.param = e.target.value;//监听输入框,给对象设置值
    })
    /***---------------------------------------------***/


    /***ES6 vue3双向绑定简单示例(代理Proxy)***/
    let data = {};// 定义一个对象
    let objE = new Proxy(data,{
        get(target, key) {
            return "";
        },
        set(target, key, value) {
            document.getElementById("e1").innerText = value;//截取对象set方法,给元素赋值
        },
    });
    document.getElementById("e0").addEventListener("input",function (e){
        objE.param = e.target.value;//监听输入框,给对象设置值
    })
    /***---------------------------------------------***/
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值