我决定每周都写一点技术的博客,但是一开始真的不知道要写什么。或许也是自己的水平没有到能想到一个什么很有意思的话题去写吧。
那么我初期的博客就围绕着别人的博客,然后写上自己的发散和笔记吧。
文中说不对Vue中的双向绑定的原理做过多解释了,但是我好像根本就不怎么了解也。所以,第一部分还是自己总结一下双向绑定的原理吧。
双向绑定实现的原理
刚看了一遍别人的博客,脑袋有点晕。妈的。再理理。
实现的最基本的思路是做到数据的监听。数据的劫持,在MVVM框架中,做到data层和view层的数据劫持。对于view层数改动,是很容易监听的。毕竟JS中的监听器就是专门做这个的。重点在于数据层的更改怎么和view层的更新的。
这个地方用到的就是Object.definePropert()。这个方法接受三个参数,第一个是目标对象,第二个是对象的属性名,第三个是针对该属性的描述。
var Book = {}
var name = ''
Object.defineProperty(Book,'name',{
set:function(value){name = value; console.log('you named a book '+name)},
get:function(){return '\<'+name+'\>'}
})
Book.name = 'yoyi'//you named a book yoyi
Book.name //"<yoyi>"
在描述里面就可以对set和get进行监听,双向绑定的最基本的思路就是这样实现的。接下来,怎么做的,继续看吧。