Vue中数据代理与事件处理

news2024/11/26 3:53:56

目录

数据代理

Object.defineProperty

常见属性值

get和set函数 

 理解数据代理

Vue中的数据代理

 Vue中的数据代理小结

事件处理

 v-bind

 事件处理小结


数据代理

Object.defineProperty

常见属性值

<body>
<script type="text/javascript">
let person={
    name:"kc",
    sex:"男"
}
Object.defineProperty(person,'age',{
    value:18,
    enumerable:true,//控制属性是否可以枚举(遍历),默认是false
    writable:true,//控制属性是否可以修改,默认是false
    configurable:true//控制属性是否可以删除,默认是false
    }
)
console.log(Object.keys(person))//遍历
    // console.log(person)
</script>


</body>

get和set函数 

<body>
<script type="text/javascript">
    let num=20;
let person={
    name:"kc",
    sex:"男"
}
Object.defineProperty(person,'age',{

    //当有人读取person的age属性时get函数(getter)就会被调用,且返回值就会age的值
       //原始写法 get:function(){}  ---->  简写  get(){}    
get() {
        console.log("age属性被访问了")
       return num
    },

    //当有人修改age属性的值时,set函数就会被调用
    set(value) {
        console.log("age的值被修改了,值为"+value)
        num=value
    }
    }
)
console.log(Object.keys(person))//遍历
    // console.log(person)
</script>


</body>

 访问页面

 理解数据代理

<script type="text/javascript">
//数据代理 :通过一个数据的对象对另一个数据的属性进行操作(读取)

    let obj={x:10}
    let obj2={y:20}
 Object.defineProperty(obj2,"x",{

     get() {
         return obj.x
     },
     set(value) {
        obj.x =value
     }
 })

console.log(obj2)
</script>

Vue中的数据代理

在Vue中的data数据,在其对象中以_data形式存在

 存在数据代理,所以可以通过vm直接操作data中的值,_data中的值会跟着变化

 Vue中的数据代理小结

1、Vue中的数据代理:

  • 通过vm对象来代理data对象中的属性的操作(读/写)

2、Vue中数据代理的好处:

  • 更加方便的操作data中的数据(如 {{ _data.name}}----->{{name}} )

3、基本原理:

  • 通过Object.defineProperty()吧data对象中所有属性添加到vm上。
  • 为每一个添加到vm上的属性,都指定一个getter/setter。
  • 在getter/setter内部去操作(读/写)data中对应的属性

事件处理

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--vue-->
    <script src="https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script>

</head>

<div id="root">
<h1>欢迎{{name}}</h1>
    <button v-on:click="info()" v-bind:title="buttonValue">点击提示信息</button>
    <button @click="info1(123,$event)"   v-bind:title="buttonValue">提示的按钮</button>
</div>


<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            name:"孔超",
            buttonValue:"这是一个按钮哦"
        },
        methods:{
            info(){
                console.log(event.target.innerText)//获取值
                alert(vm.name+"hello")
            },

            info1(number,event){
                console.log(number)
                alert(vm.name+"hello")
            }
        }


    });
 

</script>

<body>

</body>
</html>

 v-bind

v-bind:title=“xxx”,绑定一个属性,让鼠标移动到上面有提示信息

页面效果

 事件处理小结

事件的基本使用:

1、使用v-on:xxx或者@xxx 绑定事件,其中xxx是事件名

2、事件的回调需要配置在methods对象中,配置在data中也可以,但是Vue会给data中的数据做代理,而我们的回调不需要做代理,这就增加了Vue的负担。

3、methods中配置的函数,不要用箭头函数!否则this就不是vm对象了,而是window

4、methods中配置的函数,都是被Vue所管理的函数,this的指向是vm,或者组件实例对象;

5、@click="test"和@click="test($event)"效果一致,但是后面的可以传如参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你的数据库到底应该如何存储密码?

最近接手公司一个之前的服务&#xff0c;竟然发现用户密码是明文存储在数据库中&#xff01; 说实话还是有点吃惊的&#xff0c;这可不兴学 CSDN 呀&#xff08;手动狗头&#xff09;&#xff0c;至少也得搞个 MD5 存一存吧。 不过 MD5 其实也没啥用&#xff0c;今天我们就来…

阿里P7告诉你,接口测试真的很简单,有手就行

一、什么是接口测试&#xff1f; 所谓接口&#xff0c;是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试&#xff0c;则是通过接口的不同情况下的输入&#xff0c;去对比输出&#xff0c;看看是否满足接口规范所规定的功能、…

使用SQL语句处理csv数据

目录 1. CsvQuery插件安装 2. CsvQuery简单说明 2.1 以表格的形式展示数据 2.2 执行SQL查询语句 2.3 将查询结果保存为新文件 2.4 数据处理 EXCEL打开csv文件日期、文本形式的大数会被自动转换成科学计数&#xff0c;用编辑器打开csv文件可以避免这种情况&#xff0c;但是…

两个对象相等(==、equals、hashCode)详解

目录1. 和 equals2. hashCode1. hash 概述2. hashCode1. 概念2. 获取对象地址3. hashCode 与 equals1. 两者关系2. 重写 equals并 重写 hashCode1. 只重写 equals2. 重写 equals 并重写 hashCode3. 小结1. 和 equals 在 Java 中&#xff0c;判断两个对象是否相等&#xff0c…

CMOS反相器的工作原理和电路结构

CMOS 反相器的电路结构 当输入为高电压的时候&#xff0c;下半部分导通&#xff0c;输出端接地 当输入为低电压的时候&#xff0c;上半部分导通&#xff0c;输出端连接VDD 静态输入特性 从反相器输入端看进去输入电压与电流的关系 因为栅极和衬底之间存在着以二…

子网掩码与VLAN有何区别?

子网掩码与VLAN有何区别?_百度知道 (baidu.com) 可以这么理解&#xff1a;子网掩码是对节省IP地址的资源而设立。而VLAN则是对方便网络管理需要而设立。两者之间似乎有相识之处&#xff0c;但各自的功能是不一样的。 vlan下起子网,子网掩码与vlan有何区别-天道酬勤-花开半夏…

[附源码]Python计算机毕业设计Django的高校课程知识库

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

前后端分离项目的https加密解密过程一、从https说起

前后端分离项目的https加密解密过程一、从https说起 最近在看一个开源的项目&#xff0c;叫MetersPhere&#xff0c;在看的过程中&#xff0c;发现并不了解其中加密解密的过程&#xff0c;打算将整个流程梳理一下。 从https一定是安全的么说起 对称加密和非对称加密 一&…

PC_访存过程@内存地址翻译过程@具有快表TLB和cache的多级存储系统

文章目录PC_访存过程内存地址翻译过程具有快表TLB和cache的多级存储系统具有TLB和Cache的多级存储系统三类缺失的可能情况组合小结cache缺失/内存缺页处理机构带TLB虚拟存储器的cpu访存过程PC_访存过程内存地址翻译过程具有快表TLB和cache的多级存储系统 具有TLB和Cache的多级…

POI的使用

POI简介&#xff08;Apache POI&#xff09;&#xff0c;Apache POI是Apache软件基金会的开放源码函式库&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI官网 HSSF &#xff0d; 提供读写Microsoft Excel格式档案的功能。&#xff08;.…

C++ bool类型变量赋值true,输出结果却是false?是因为cin输入的true会被当成字符串,所以bool变量原值不变吗?

首先&#xff0c;大家可能看过其他文章&#xff0c;他们给出的观点是这样的&#xff1a; 在C中bool类型的变量初始值为false&#xff0c;所以如果你不初始化&#xff0c;那么对变量使用cin>>赋值true和false的时候&#xff0c;编译器会把true和false当成是字符串&#x…

【LeetCode每日一题:895.最大频率栈~~~Map+栈】

题目描述 设计一个类似堆栈的数据结构&#xff0c;将元素推入堆栈&#xff0c;并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果…

[附源码]Python计算机毕业设计Django的酒店预订系统设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

深度学习快速入门----Pytorch 系列3

注&#xff1a;参考B站‘小土堆’视频教程 视频链接&#xff1a;【PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】 系列文章&#xff1a; 深度学习快速入门----Pytorch 系列1 深度学习快速入门----Pytorch 系列2 深度学习快速入门--…

[附源码]计算机毕业设计JAVA小区供暖收费管理系统

[附源码]计算机毕业设计JAVA小区供暖收费管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

世界杯小组赛频繁爆冷?这或许是强队的谋略 一分钟带你了解2022卡塔尔世界杯赛制

今年的世界杯你赚到钱了吗&#xff1f; 我们这里所说的世界杯是指世界杯决赛圈&#xff0c;也被叫做世界杯正赛。参赛队伍是已经通过世界杯预选赛选拔出的的32支队伍&#xff08;除了东道主卡塔尔自动晋级&#xff09;。 世界杯中没有皇马、巴萨、曼联&#xff0c;这些都是俱乐…

基于 SpringBoot + MyBatis 的网页版五子棋对战

目录 一、项目所要实现的功能模块 1、用户模块 2、匹配模块 3、对战模块 二、使用技术 三、项目截图 1、登录页面 2、注册页面 3、游戏大厅页面 4、游戏房间页面 四、创建 SpringBoot 项目 1、在 IDEA 中创建一个 SpringBoot 项目 2、设置项目名称 3、选择项目依…

第2-4-9章 规则引擎Drools实战(2)-信用卡申请

文章目录9.2 信用卡申请9.2.1 计算规则9.2.2 实现步骤9.2 信用卡申请 全套代码及资料全部完整提供&#xff0c;点此处下载 本小节我们需要通过Drools规则引擎来根据规则进行申请人的合法性检查&#xff0c;检查通过后再根据规则确定信用卡额度&#xff0c;最终页面效果如下&a…

浅谈架构备考.补缺.V1

2022.11.28 可靠性分析 to repair to failure between failure 平均故障间隔时间。平均故障间隔时间&#xff08;Mean Time Between Failure&#xff0c;MTBF&#xff09;常常与 MTTF 发生混淆。 因为两次故障&#xff08;失败&#xff09;之间必然有修复行为&#xff0c;因…

SpringBoot主启动类使用@ComponentScans、@ComponentScan扫描组件类,注意避坑

前言&#xff1a; 1、大家都知道&#xff0c;Springboot主启动加载会默认扫描同级包目录下所有的组件类、配置类&#xff0c;然后进行解析注入到Spring容器中。SpringBootApplication 是个联合注解&#xff0c;里面包含了 ComponentScan 组件扫描注解&#xff0c;所以我们不需要…