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 天前
Harmony os 静态卡片(ArkTS + FormLink)详细介绍
前端·microsoft·harmonyos·鸿蒙
用户47949283569151 天前
Bun 卖身 Anthropic!尤雨溪神吐槽:OpenAI 你需要工具链吗?
前端·openai·bun
p***43481 天前
前端在移动端中的网络请求优化
前端
g***B7381 天前
前端在移动端中的Ionic
前端
大猩猩X1 天前
vxe-gantt 甘特图使用右键菜单
vue.js·vxe-table·vxe-ui·vxe-gantt
拿破轮1 天前
使用通义灵码解决复杂正则表达式替换字符串的问题.
java·服务器·前端
whltaoin1 天前
【 Web认证 】Cookie、Session 与 JWT Token:Web 认证机制的原理、实现与对比
前端·web·jwt·cookie·session·认证机制
Aerelin1 天前
爬虫playwright入门讲解
前端·javascript·html·playwright
笙年1 天前
JavaScript Promise,包括构造函数、对象方法和类方法
开发语言·javascript·ecmascript
桜吹雪1 天前
LangChain.js/DeepAgents可观测性
javascript·人工智能