vue 数组递归_手写简易版Vue

vue中实现了数据响应的原理最根本是使用了Object.defineProperty , 还不知道怎么用的小伙伴们可以看下MDN,马上就能上手啦 附上网址:

Object.defineProperty()​developer.mozilla.org
44e0ec604026bb36d29cfa1fd6dce01a.png

总的来说 Object.defineProperty 接受 三个参数 ,

1.需要定义Key的对象 即object ,

2.定义对象中属性的key名城,

3.设置属性的对象 其中 该对象中可设置的属性有:

  • -> value (key对应的值) 、
  • -> writable (value是否可以重新定义)、
  • -> enumerable (该属性key是否可以被枚举遍历) 、
  • -> configerable (属性key是否可以删除)、
  • -> get (get必须是一个函数 ,且函数必须有一个返回值,设置了get就不能设置value属性)
  • -> set (set必须是一个函数 , 函数默认第一个参数是newValue,可以这个参数获取到新的值)

下面开始编写简易版的Vue (一步步实现)

一 、首先创建一个Vue的构造函数

function 

二 、如上代码初始化数据的监听模式 ,为了方便起见把this._data 中的key全部映射Vue的实例中去(加粗为新增代码)

function 

三 、实现html中字符模板的编译

function 

四 、 使用订阅发布模式,监听者达到数据响应模式,实现数据和视图关联,

注意 如下代码中的 let dep =newDep();//创建发布订阅模式 , 每当递归都会重新创建,造成资源浪费, 有待优化

function 

五、 实现v-model双向数据绑定

function 

六、实现Computed

function 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值