美文网首页
2019-10-31

2019-10-31

作者: 三多_250e | 来源:发表于2019-11-01 21:23 被阅读0次

手写vue的mvvm实现原理

1:mvc和mvvm的区别?

MVC:modal-view-controller,比较直观的架构模式;
用户操作 --->>view层(展示层以及用户交互等)--->controller(对应用户交互后的业务逻辑处理)---->>modal(数据持久化)---->view(将结果反馈回给view)

MVVM:将 “数据模型/数据双向绑定” 思想作为核心,因此没有controller层,view和modal间没有联系,通过view modal进行交互,且modal和 viewmodal之间的交互是相互的,因此,view层的数据变化,同时会修改数据源中的数据,
vue的mvvm模式:数据劫持object.definePropterty发布订阅
angular的mvvm模式是通过脏值检测实现

2实现vue的mvvm

2.1 明确Object.defineProperty()用法

定义

MDN中定义:Object.defineProperty()方法会直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性,并返回这个对象。

语法
   Object.defineProperty(obj,prop,descriptor)
    参数:obj
    要在其上定义属性的对象,即最终改变的属性主体
    参数:prop
    要定义或修改的属性的名称
    参数:obj
    将被定义或或修改的属性描述符

三个参数中前两个比较好理解,但是最后一个属性描述符是重点需要关注的,根据mdn中描述,对象里目前存在的属性描述符两种主要形式:** 数据描述符存取描述符**。数据描述符是一个具有值的属性,该属性可能是可写的,也可能是不可写的。存取描述符是由getter-setter函数对描述的属性。

相关文章

  • 竹枝词-户部巷过早二首

    陈武林2019-10-31 竹枝词-户部巷过早二首 陈武林 2019-10-31 (一) 古来户部隐江城,小巷悠然...

  • lxy的ScalersTalk第五轮新概念朗读持续力训练Day8

    [Day 1861 2019-10-31] Lesson21 Mad ornot? Aeroplanes are ...

  • 反射

    2019-10-31 // getName():获得类的完整名字。 // getgetSimpleName...

  • IO

    2019-10-31 package com.lixing.io11; import java.io.*; pub...

  • 10月31日

    2019-10-31 毛雅亭 字数 480 · 阅读 22 2019-09-25 08:27 ...

  • 读书笔记:了不起的我

    名称:《了不起的我 —— 自我发展的心理学》 阅读时间:2019-10-29 - 2019-10-31 (3天) ...

  • 文先森的日常 -- 剩46天

    日精进打卡第446天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-10-31 【知~学习】 《...

  • 常见类型 范围大小

    2019-10-31 顺便记忆下 个、十、百、千、万、十万、百万、千万、亿、兆(10的12次方)、京〔10的16次...

  • 2019-10-31

    2019-10-31 姓名:符振华(379期 反省三组) 公司:深圳蔚蓝时代商业管理有限公司-上海第一分公司 【日...

  • 鉴峰丨平凡,不要平淡

    鉴峰自我管理 [连续签到第659天] 2019-10-31 周四 生活有喜怒哀乐, 也有柴米油盐, 平凡, 我也是...

网友评论

      本文标题:2019-10-31

      本文链接:https://www.haomeiwen.com/subject/csetbctx.html