Vue的MVVM实现

作者: sunny519111 | 来源:发表于2017-08-16 16:02 被阅读67次

Vue的MVVM实现

1. Object.defineProperty() 定义属性

用意:给一个对象定义属性,那个属性原来是不存在的。这是一个初衷,属性是不存在的,需要额外添加。

  1. 使用说明

    Object.defineProperty(obj,props)

    第一个参数是将被添加或者修改的属性的对象

    第二个参数是一个对象,表示将要添加的一个或多个键值对一直要添加属性的具体配置

    {

    ​ '属性名':{value:'...',writable:true},

    ​ '属性名':{value:'...',writable:true}

    }

  2. 属性的getter和setter

    • 一般用于局部变量
    • 给构造函数添加属性
    // get和set的方法不能和value以及writable一起使用
    var o ={},
    Object.defineProperty(o,'p',{
     get(){
          console.log('调用属性后输出')
     },
         set(val){
          console.log(val+'赋值属性的时候调用')
         }
    })
    o.p // '调用属性后输出'
    o.p = 'hcc' //hcc赋值属性的时候调用
    // 可以根据Object.getOwnPropertyDescriptor(对象, '属性名')得到相应的属性配置
    
    // 需求
    //给一个对象的属性值不能超过30,超过30的按照30来算
    var hcc = {} //全局对象
    {
     var age = null  //局部变量
     Object.defineProperty(hcc,'age',{
         get(){
             return age  //设置hcc.age的值
         },
         set(val){
             age= val> 30?30:val //当赋值给hcc.age的值进行判定从而改变局部变量age的值 
         }   
     })
    }
    
  3. 使用场景

       // 简单的给元素添加属性
       var obj = {name:'hcc'}
       Object.defineProperties(obj,{
         'name':{value:'haaaaa',writable:true},
         'age':{value:24,writable:false}
       })
    

细节

今天楼主上午在思考,一般使用Object.defineProperty()为什么需要使用局部变量呢?

所有楼主就下了下面的代码

var obj = {}
Object.defineProperty(obj,'a',{
  get() {
    return 'gg';
  },
  set(value) {
    obj.a = value;
  }
})
双向绑定.png

缺点: 必须要事先的绑定dom。是不是和Vue里面的很想,必须事先申明data中的数据,如果需要额外的添加数据的时候,必须通过Vue.set()来申明。

相关文章

  • vue小总结

    MVVM模式: Vue就是基于MVVM模式实现的一套框架,在Vue中 路由 VUEX .vue文件

  • VUE MVVM实现

    VUE MVVM实现 详细代码请参考: https://github.com/osorso/VUE_MVVM 理解...

  • Vue2.0原理与MVVM的实现

    剖析Vue原理&实现双向绑定MVVM vue源码 双向绑定 -- MVVM 目前几种主流的MVC框架都实现了单向数...

  • vue入门

    MVVM的介绍 vue的设计思想是基于MVVM实现的,那么什么是MVVM呢?简单介绍: 组成 MVVM ===> ...

  • 初识Vue

    1. MVVM模式 Vue采用MVVM(Model-View-ViewModel)模式实现,MVVM模式由MVC演...

  • Vue实现原理

    vue实现原理 1、了解Object的属性defineProperty 2、vue中mvvm的实现: 数据变化更新...

  • 前端面试之MVVM 和 Vue

    ++本文系慕课网学习笔记++ 如何理解 MVVM 如何实现 MVVM 是否解读过 vue 的源码(vue 中的 x...

  • 03Vue源码实现

    Vue 源码实现 理解 Vue 的设计思想 MVVM 模式 MVVM 框架的三要素:数据响应式、模板引擎和渲染 数...

  • vue的mvvm原理解析及手写一个

    # 手写vue的mvvm实现原理 ## 1:mvc和mvvm的区别? MVC:modal-view-control...

  • Vue MVVM框架响应式数据原理

    MVVM 是一种设计思想,Vue 框架中 MVVM 是如何实现的呢? Vue.js 是采用 Object.defi...

网友评论

    本文标题:Vue的MVVM实现

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