vue的双向绑定Object.definedProperty(obj,key,{set,get})

这篇具有很好参考价值的文章主要介绍了vue的双向绑定Object.definedProperty(obj,key,{set,get})。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue的代码方式文章来源地址https://www.toymoban.com/news/detail-742446.html

引入vue

 <script src="../src/vue.js"></script>

结构布局

<div id="app">
  <h1>{{msg}}</h1>
    <h1>{{reverseStr}}</h1>
    <button v-on:click="changeMsg">变化</button>
</div>

vue的结构

let app=new Vue({
	 el:"#app",//虚拟节点绑定的元素  ""是选择器
	 data:{
	     msg:"hello world",//数据 双向的数据
	 },
	 //计算属性 他是属性 属性就是一种值 和method是有区别的
	 //计算属性会进行缓存  不会多次执行
	 computed: {
	     reverseStr(){
	         return this.msg.split("").reverse().join("")
	     }
	 },
	 //  这里面 通常都是事件函数  根据事件例如click进行响应的操作
	 methods: {
	     changeMsg(){
	         this.msg="我是双向数据修改的"
	     }
	 },
	 //监听数据 就是把这里的操作 放到 set当中
	 //类似于发布定于的模式
	 watch: {
	     msg(newVal,oldVal){
	         console.log("数据监听 发现变化了");
	     }
	 },


})

vue双向数据绑定的原理Object.defineProperty

// vue双向数据绑定的原理


let VueObj={
    data:{
        msg:"hello world"
    }
}
Object.defineProperty(VueObj,'msg',{
    get(){
        console.log("获取数据msg"+ this.data.msg);
        return this.data.msg
    },
    set(val){
        console.log("修改数据msg"+val);
        this.data.msg=val
    }
})

//当我们获取Vue.msg  就会访问data.msg
/*
Vue={
    msg:"",//双向绑定添加的  带有set和get
    data:{msg:""}
}
*/
console.log(VueObj.msg);//获取 执行get  返回的是this.data.msg

//修改
VueObj.msg="我是大帅逼"修改 执行set  把this.data.msg修改了
//再次获取
console.log(VueObj.msg);

//总体来说就是把 data的属性 都映射到Vue的上面   并设置get  set

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- vue的引入 -->
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> -->
    <script src="../src/vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>{{msg}}</h1>
        <h1>{{reverseStr}}</h1>
        <button v-on:click="changeMsg">变化</button>
    </div>
    <script>
        let app=new Vue({
            el:"#app",//虚拟节点绑定的元素  ""是选择器
            data:{
                msg:"hello world",//数据 双向的数据
            },
            //计算属性 他是属性 属性就是一种值 和method是有区别的
            //计算属性会进行缓存  不会多次执行
            computed: {
                reverseStr(){
                    return this.msg.split("").reverse().join("")
                }
            },
            //  这里面 通常都是事件函数  根据事件例如click进行响应的操作
            methods: {
                changeMsg(){
                    this.msg="我是双向数据修改的"
                }
            },
            //监听数据 就是把这里的操作 放到 set当中
            //类似于发布定于的模式
            watch: {
                msg(newVal,oldVal){
                    console.log("数据监听 发现变化了");
                }
            },


        })

        // vue双向数据绑定的原理


        let VueObj={
            data:{
                msg:"hello world"
            }
        }
        Object.defineProperty(VueObj,'msg',{
            get(){
                console.log("获取数据msg"+ this.data.msg);
                return this.data.msg
            },
            set(val){
                console.log("修改数据msg"+val);
                this.data.msg=val
            }
        })

        //当我们获取Vue.msg  就会访问data.msg
        /*
        Vue={
            msg:"",//双向绑定添加的  带有set和get
            data:{msg:""}
        }
        */
        console.log(VueObj.msg);//获取 执行get  返回的是this.data.msg

        //修改
        VueObj.msg="我是大帅逼"修改 执行set  把this.data.msg修改了
        //再次获取
        console.log(VueObj.msg);

        //总体来说就是把 data的属性 都映射到Vue的上面   并设置get  set

    </script>
</body>
</html>

到了这里,关于vue的双向绑定Object.definedProperty(obj,key,{set,get})的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Vue双向绑定的原理是什么?

    在 Vue 中,双向绑定是指数据的变化会同时反映在视图上,而视图的变化也会同步更新数据。Vue 的双向绑定是通过以下原理实现的: 数据响应系统(Reactivity System):Vue 使用了响应式的数据绑定机制。当你在 Vue 实例中的数据属性上使用 data 选项定义数据时,Vue 会通过 Obje

    2024年02月08日
    浏览(8)
  • vue3组件之间双向绑定

    Vue3中组件的双向绑定统一使用 v-model 进行处理,并且可以和多个数据进行绑定,例如 v-model:foo、v-model:bar。 v-model 等价于 :model-value=\\\"someValue\\\" 和 @update:model-value=\\\"someValue = $event\\\" v-model:foo 等价于 :foo=\\\"someValue\\\" 和 @update:foo=\\\"someValue = $event\\\" 父子组件之间双向绑定 子组件可以结合 i

    2024年02月11日
    浏览(9)
  • Vue双向数据绑定原理(面试必问)

    Vue双向数据绑定原理(面试必问)

    1、前端面试题库 ( 面试必备)             推荐:★★★★★ 地址:前端面试题库   vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。 具体步骤

    2023年04月08日
    浏览(9)
  • Vue父子组件间数据的双向绑定

    Vue父子组件间数据的双向绑定

    在vue中数据的流向通常是单向的,但是实际开发中,存在子组件对父组件值进行更新的情况,例如对表单组件进行二次封装等,父组件需要响应子组件的变化。双向绑定呼之欲出,vue提供了两种方法进行双向绑定: 在父组件上 v-model 会利用子组件名为 value 的 prop 和名为 inp

    2024年02月06日
    浏览(10)
  • Vue中双向数据绑定及底层原理

    Vue中的双向数据绑定是指数据的变化可以自动更新到视图,同时用户在视图上的操作也可以同步更新到数据。这种机制使得开发者无需手动操作DOM来实现数据与视图的同步。 Vue实现双向数据绑定的底层原理主要包括以下几个方面: 数据劫持:Vue通过使用 Object.defineProperty 方法

    2024年02月09日
    浏览(9)
  • vue2双向数据绑定基本原理

    vue2双向数据绑定基本原理

    vue2的双向数据绑定(又称响应式)原理,是通过数据劫持结合发布订阅模式的方式来实现的,通过 Object.defineProperty() 来劫持各个属性的 setter , getter ,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。也就是说数据和视图同步,数据发生变化,视图跟着变化

    2023年04月10日
    浏览(13)
  • 前端开发,Vue的双向数据绑定的原理

    前端开发,Vue的双向数据绑定的原理

    目录 一、什么是前端 二、Vue.JS框架 三、双向数据绑定 四、Vue的双向数据绑定的原理 前端通常指的是网页或应用程序中用户直接交互和感知的部分,也称为客户端。前端开发涉及使用HTML、CSS和JavaScript等技术来构建用户界面和交互功能。前端开发人员负责确保网站或应用程序

    2024年02月19日
    浏览(12)
  • 【Vue】双向绑定 v-model

    2024年01月22日
    浏览(11)
  • 【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

    【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

    什么是数据双向绑定? 当数据发生变化的时候,视图会相应的发生变化 当视图发生改变的时候,数据也会相应的同步变化 数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 双向绑定的指令 ​ v-model 指令实现数据双向绑定 双向绑定使用场景 ​

    2024年02月09日
    浏览(13)
  • 一文搞懂Vue的MVVM模式与双向绑定

    v-model 是 Vue.js 框架中用于实现双向数据绑定的指令。它充分体现了 MVVM(Model-View-ViewModel)模式中的双向数据绑定特性。下面我们将详细解释 v-model 如何体现 MVVM 和双向绑定: MVVM 模式是一种软件架构设计模式,它将应用程序分为三个部分: Model(模型) :代表应用程序的数

    2024年03月12日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包