首页 > 其他分享 >Vue-数据代理

Vue-数据代理

时间:2022-10-14 13:35:35浏览次数:56  
标签:Vue 对象 age number 代理 数据 属性

Vue中的数据代理

数据代理定义

所谓数据代理,就是通过一个对象代理对另一个对象中的属性的操作(读/写)。说白了就是操作一个对象上的属性可以读取和修改另一个对象上的属性,这种关系就叫做数据代理。

在Vue中模板解析里面的数据就用到了数据代理,要想弄明白其中的原理,我们首先要了解Object对象上的defineProperty方法

Object.defineProperty()

该方法是用于给一个对象添加属性,它接收3个参数:要添加属性的对象、属性名和配置对象

const p = {
    name:'luffy',
    sex:'男'
}
Object.defineProperty(p,'age',{
    value:18
})
console.log(p)

这样就给p对象添加了一个sex属性,该属性的值为'男'。

第三个配置对象有一些基本属性:

enumerable 控制属性能否被枚举,默认为false

writable 控制属性能否被修改,默认为false

configurable 控制属性能否被删除,默认为false

除此之外,配置对象里还有两个高级属性get和set

let number = 18
const p = {
    name:'luffy',
    age:20
}
Object.defineProperty(p,'age',{
    get:function(){
        return age;
    }
})
console.log(p)

当有人读取p对象的age属性时,get函数就会被调用,get函数的返回值就是age的值

有了这个函数,当我们修改了变量number的值后,p.age的值也会跟着修改

除了上面的写法之外,我们也可以用它的简写形式:
let number = 18
const p = {
    name:'luffy',
    age:20
}
Object.defineProperty(p,'age',{
    get(){
        return number;
    },
    set(value){
        number = value
    }
})
console.log(p)

我们将这两个函数称为p.age的getter和setter

set函数接收一个参数value,该值是我修改p.age所赋的值。setter中我们将value有赋值给number,所以变量number的值就会被改变,那么当我们再次读取age的时候,其值也会随之改变。

上述例子可以看到,通过使用getter和setter我们实现了用p对象上的一个属性代理变量number的值

vue中的数据代理

Vue中就是通过数据代理,将data中的数据添加到了vue对象身上

<div id="app">
			
</div>
<script src="../vue.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    data = {
        name:'luffy',
        sex:'男',
        age:19
    }
    const vm = new Vue({
        el:"#app",
        data
    })
</script>

当我们修改vm身上的age属性时,也修改了data中的age属性

因为vm身上的age属性是代理的data中的age属性。

这就是vue中的数据代理

标签:Vue,对象,age,number,代理,数据,属性
From: https://www.cnblogs.com/luffy123/p/16791320.html

相关文章

  • vue-utils__工具类函数
    vue-utils__工具类函数1.is判断consttoString=Object.prototype.toString;/***@description:判断值是否为某个类型*/exportfunctionis(val,type){ ret......
  • 前端成神之路-vue前端工程化
    1.模块化的分类A.浏览器端的模块化1).AMD(AsynchronousModuleDefinition,异步模块定义)代表产品为:Require.js2).CMD(CommonModuleDefinition,通用模块定义)......
  • Spark常见数据倾斜情况及调优方案
    1、数据倾斜Spark中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题例如,reduce点一共要处理......
  • Vue代码规范
    目录Vue代码规范简洁汇总函数方法常用动词汇总结构化规范目录文件夹及子文件规范vue文件基本结构元素规范元素特性的顺序组件选项顺序详细Vue代码规范好文推荐Vue代码规......
  • vue+elementui+axios环境搭建
    1.去官网下载安装node.js,安装后用命令检测版本信息node-vnpm-v2.安装vue环境#安装淘宝npmnpminstall-gcnpm--registry=https://registry.npm.......
  • 利用a标签实现文件下载功能(ant design vue可用)
    #利用a标签实现文件下载功能(antdesignvue可用)##代码和注释```letfileUrl=“”//所下载文件的网络地址letfileName=“”//下载成功后保存的文件名//创建一个a标......
  • Vue3+Element-plus 报错记录
    目录Vue3+Element-plus报错记录报错信息错误场景还原问题排查错误代码el-select多选Vue3+Element-plus报错记录报错信息TypeError:Cannotreadpropertiesofnull......
  • Python爬虫之数据提取概述
    数据提取概述知识点了解响应内容的分类了解xml和html的区别1.响应内容的分类在发送请求获取响应之后,可能存在多种不同类型的响应内容;而且很多时候,我们只需要响应内容中的......
  • Python爬虫之数据提取-selenium定位获取标签对象并提取数据
    selenium提取数据知识点:了解driver对象的常用属性和方法掌握driver对象定位标签元素获取标签对象的方法掌握标签对象提取文本和属性值的方法1.driver对象的常用属性和方......
  • Python爬虫之数据提取-selenium的其它使用方法
    selenium的其它使用方法知识点:掌握selenium控制标签页的切换掌握selenium控制iframe的切换掌握利用selenium获取cookie的方法掌握手动实现页面等待掌握selenium控制浏......