补:数据绑定,数据代理

《1.指令语法与插值语法》

一旦使用了v-bind\或他的简写形式(:),那么vue会将这里面的东西当做是 “js表达式(变量/对象/函数)”,然后去寻找,执行


《2.数据绑定》

数据绑定就是数据发生了变化,则与数据绑定的样式也会发生变化

我们通过写在Vue中的数据,由v-bind当做变量等,找到,返回到页面上;

而 v-model 可以收集用户输入,改变Vue中的数据,这是v-bind所做不到的;

模板:v-model:value="vue中数据"   ------简写:v-model="vue中的数据";

因为在表单中才能收集用户数据,所以其用在表单元素上

《1.补:原型问题》

补充一下原型的内容:

 

通过__proto__实例对象可以访问本是在构造函数上的prototype;

 

 注意原型链上有一个很重要的点,构造函数的原型对象的原型对象是Object的原型对象

即 构造函数.prototype.__proto__===Object.prototype;

了解了这个后来看一下Vue与VueComponent的通过原型而产生的关系:

Vue官方将VueComponent的原型对象.__proto__本应该是Object.prototype,改成了Vue的原型对象;

《2.补:el的两种写法》

我们console.log(vue的实例对象),会发现在vue 的实例对象下有[[Prototype](__proto__),旗下有如下:

$mount在prototype中,其是能够在vue外面进行挂载的作用

 《3.补:vm》

所以我们说的vm其实是ViewModel的简写,即Vue的实例对象,通过数据监听,将View(我们输入的通过vm传给model,model变化了再通过数据绑定通过vm返回到View);


《4.补:数据代理--getter与setter》

我有一个需求:我想让一个对象上的一个属性可以随时变化

这样可以吗?person上的age是变量number的值,但是很遗憾,这个代码一过值就不变了

则要用到js 上的一个方法:

 

输出的是:

 

age受get代理,一开始是:

 

点开age,age被读取

 

 

age 要点开才是上面的,其受getter中的return 决定

与getter相辅相成的setting:

 《2.数据代理在vue中的应用》

当我们写好data后,vue会帮我们在vm上保管好这个data,保管的形式是:vm._data,其把data写到了vm自身上的_data属性上了

我们可以以vm._data."数据名称"的方式访问或改变。

然后vm将data中的数据用object.defineProperty帮我们写到了vm身上,从而这个数据获得了getter与setter,这个getter与setter在_data中

因为数据代理的作用:我们在vm上想碰到数据可以直接vm."数据名称",从而可以简写vm._data."数据名称".

《如果以后我想在data中不通过改源码的情况下加有数据代理的数据该怎么办?》

比如我要求给这个学生student对象加上sex:“男”,
可以用vue.set(vm.student,"sex","男");
但set 的 不能给vm,或vm._data加属性
set 已在 vue3中被删除

 

posted @ 2022-06-06 23:24  次林梦叶  阅读(64)  评论(0)    收藏  举报