Vue.js的双向绑定原理

Vue的双向绑定

vue双向绑定是其最重要的核心亮点,其原理也很简单,这里做个简单总结

  • vue2的双向绑定是利用的Object.defineProperty
  • vue3的双向绑定是利用的
    ES6Porxy中的defineProperty(target, propKey, propDesc
    其作用类似于Object.defineProperty

下面写一下两种原理的简单代码

  • 用于直观展示双向绑定的视图层(view) html代码

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <body>

    </body> </html>
  • vue2的双向绑定

    let obj={
    message:"12"
    }
    Object.defineProperty(obj,"message",{
    get:function(){
    return this._message
    },
    set:function(newValue){
    this._message=newValue
    document.getElementById("output").innerHTML=newValue
    }

    })

    document.getElementById("input").addEventListener('input',(event)=>{
    obj.message=event.target.value
    })

代码主要对对象的set过程进行劫持,将其与view层绑定

  • vue3的双向绑定

    let obj={
    message:"12"
    }
    const newObj=new Proxy(obj,{
    get:function(target,propKey,rev){
    return Reflect.get(target,propKey)
    },
    set:function(target,propKey,value){
    Reflect.set(target,propKey,value)
    document.getElementById("output").innerHTML=value
    }
    })

    document.getElementById("input").addEventListener('input',(event)=>{
    newObj.message=event.target.value
    })

  • 效果
    !

相关推荐
赵大仁1 小时前
微前端框架选型指南
前端·架构·前端框架
GISer_Jing1 小时前
阿里云前端Nginx部署完,用ip地址访问却总访问不到,为什么?检查安全组是否设置u为Http(80)!
前端·nginx·阿里云
爱笑的眼睛116 小时前
uniapp 云开发全集 云数据库
javascript·数据库·oracle·uni-app
赵大仁7 小时前
微前端统一状态树实现方案
前端·前端框架
阿珊和她的猫8 小时前
钩子函数和参数:Vue组件生命周期中的自定义逻辑
前端·javascript·vue.js
勘察加熊人8 小时前
vue展示graphviz和dot流程图
前端·vue.js·流程图
软件2058 小时前
【登录流程图】
java·前端·流程图
2501_915373889 小时前
Electron 从零开始:构建你的第一个桌面应用
前端·javascript·electron
贩卖黄昏的熊10 小时前
JavaScript 笔记 --- part8 --- JS进阶 (part3)
前端·javascript·笔记
CodeCipher10 小时前
Java后端程序员学习前端之CSS
前端·css·学习