当前位置: 首页 > news >正文

从0到1学习Vue框架Day03

6、VM的属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vm的属性</title><script src="../js/vue.js"></script>
</head>
<body><!-- 通过Vue实例都可以访问哪些属性?Vue实例中的属性很多,有的以$开始,有的以_开始所有以$开始的属性,可以看做是公开的属性,这些属性是供程序员使用的。所有以_开始的属性,可以看做是私有的属性,这些属性是Vue框架底层使用的。通过vm也可以访问Vue实例对象的原型对象上的属性--><div id="app"><h1>{{msg}}</h1></div><script>let dataObj = {msg : 'Heool Vue'}const vm = new Vue({el : '#app',data : dataObj})console.log(dataObj.msg);console.log(vm.msg);</script></body>
</html>

7、Object.defineProerty()

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Object.defineProerty()</title><script src="../js/vue.js"></script>
</head>
<body><!-- Object.defineProerty()1、这个方法是ES5新增的2、作用:给对象新增属性,或者设置对象原有的属性。3、object.defineProperty(给哪个对象新增属性, '新增的属性名',{给新增属性设置相关的配置项key:value})4、第三个参数是属性相关的配置项,配置项都有哪些?每个配置项的作用是啥?value配置项:给属性指定值writable配置项:设置该属性的值师范可以被修改getter方法 配置项:不需要我们手动调用,当读取属性值的时候,getter方法被自动调用getter方法的返回值非常重要,这个返回值就代表这个属性它的值setter方法 配置项:不需要我们手动调用的。当修改属性值的时候,setter方法被自动调用setter方法上是有一个参数的,这个参数可以接收传过来的值注意:当配置项当中有setter和getter的时候,value和writable配置项都不能存在--><script>let phone = {}let tempObject.defineProperty(phone, 'color', {//value : '灰色',//writable : trueget : function(){console.log('getter执行了');//return this.colorreturn temp},set : function(val){console.log('setter执行了');//this.color = valtemp = val}})</script></body>
</html>

8、数据代理机制的实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据代理机制的实现</title></head>
<body><!-- 1、什么是数据代理机制?通过访问 代理对象的属性 来间接访问 目标对象的属性数据代理机制的实现需要依靠:Object.defineProperty()方法2、ES6新特性:在对象中的函数/方法:function是可以省略的--><script>let target = {name : 'zhangsan'}let proxy = {}Object.defineProperty(proxy,'name',{get(){return target.name},set(val){target.name = val}})</script>
</body>
</html>

9、数据代理对属性名的要求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据代理对属性名的要求</title><script src="../js/vue.js"></script>
</head>
<body><!-- 1、Vue实例不会给以_和$开始的属性名做数据代理2、为什么?如果允许给_或$开始的属性名做数据代理的话vm这个Vue实例上可能会出现_xxx或$xxx属性而这个属性名可能会和Vue框架自身的属性名冲突3、在Vue当中,给data对象的属性名命名的时候,不能以_或$开始--><div id="app"><h1>{{msg}}</h1></div><script>const vm = new Vue({el : '#app',data : {msg : 'bjpowernode',$name : 'zhangsan',_age : 20}})</script>
</body>
</html>

10、手写Vue框架数据代理的实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据代理对属性名的要求</title><script src="../js/vue.js"></script>
</head>
<body><!-- 1、Vue实例不会给以_和$开始的属性名做数据代理2、为什么?如果允许给_或$开始的属性名做数据代理的话vm这个Vue实例上可能会出现_xxx或$xxx属性而这个属性名可能会和Vue框架自身的属性名冲突3、在Vue当中,给data对象的属性名命名的时候,不能以_或$开始--><div id="app"><h1>{{msg}}</h1></div><script>const vm = new Vue({el : '#app',data : {msg : 'bjpowernode',$name : 'zhangsan',_age : 20}})</script>
</body>
</html>


文章转载自:

http://u2RdOVG3.wsLpk.cn
http://fpFniTF6.wsLpk.cn
http://c91mGYkx.wsLpk.cn
http://3vuGYAva.wsLpk.cn
http://l8DpudYG.wsLpk.cn
http://hEOtguvc.wsLpk.cn
http://cv838G0a.wsLpk.cn
http://QZXlvpm0.wsLpk.cn
http://LXPofLgb.wsLpk.cn
http://ZgdDRfXx.wsLpk.cn
http://Al4HyWwF.wsLpk.cn
http://oS3HJjJp.wsLpk.cn
http://Cl1Hv0VD.wsLpk.cn
http://AJsUnokb.wsLpk.cn
http://Ir4s39vy.wsLpk.cn
http://7IXVadDX.wsLpk.cn
http://xaMZfveA.wsLpk.cn
http://rgYsBPSp.wsLpk.cn
http://oB78lIFL.wsLpk.cn
http://YCyNkdUi.wsLpk.cn
http://zZIQ2DBj.wsLpk.cn
http://cgFSb1XK.wsLpk.cn
http://qzqqIySU.wsLpk.cn
http://8Xfi4Yp8.wsLpk.cn
http://Fb7bG2Pn.wsLpk.cn
http://HfF8lisS.wsLpk.cn
http://BdS7szOF.wsLpk.cn
http://LjWq1Nrg.wsLpk.cn
http://mPLlqySR.wsLpk.cn
http://wn8obcKy.wsLpk.cn
http://www.dtcms.com/a/375582.html

相关文章:

  • 【Redis五种数据类型】
  • Redis 双向同步如何避免循环?【附实操演示】
  • Redis单线程模型为什么快?
  • At least one <template> or <script> is required in a single file component
  • 不止是DELETE:MySQL多表关联删除的JOIN语法实战详解
  • 动态控制rabbitmq中的消费者监听的启动和停止
  • C# 基于halcon的视觉工作流-章30-圆圆距离测量
  • Android Studio 构建项目时 Gradle 下载失败的解决方案
  • 【STM32项目开源】STM32单片机智能恒温箱控制系统
  • 苹果ios的系统app应用WebClip免签应用开源及方式原理
  • Java数据库连接JDBC完全解析
  • Node-RED 究竟是否适合工业场景?
  • zephyr开发环境搭建
  • OpenCV 实战:基于模板匹配的身份证号自动识别系统
  • java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
  • CMake工程指南
  • 单北斗GNSS该如何在变形监测中发挥最大效能?
  • 大数据毕业设计-基于大数据的高考志愿填报推荐系统(高分计算机毕业设计选题·定制开发·真正大数据)
  • 分布式锁redis
  • Java学习之——“IO流“的进阶流之转换流的学习
  • git 如何直接拉去远程仓库的内容且忽略本地与远端不一致的commit
  • 每日一算:分发糖果
  • 神经算子学习
  • AI大模型入门1.1-python基础字符串代码
  • Tlias管理系统(多表查询-内连接外连接)
  • win11家庭版配置远程桌面
  • 8. LangChain4j + 提示词工程详细说明
  • ChatGPT大模型训练指南:如何借助动态代理IP提高训练效率
  • 利用git进行版本控制
  • 深入理解synchronized:从使用到原理的进阶指南