美文网首页让前端飞vue
Vue双向绑定的秘密:defineProperty

Vue双向绑定的秘密:defineProperty

作者: CRUD_科科 | 来源:发表于2018-11-22 11:03 被阅读6次

    我们开发常用vue的双向绑定,他双向绑定究竟是怎么实现的呢?其实是用到了Object.defineProperty,下面我们就先了解一下它包含的属性方法。

 /**
   * Object.defineProperty(定义属性)参数
   * 第一个,给谁定义属性
   * 第二个,定义的属性
   * 第三个,
  */
  let obj = {};
  Object.defineProperty(obj, 'name', {
    enumerable: false, // 是否可枚举
    writable: false, // 是否可以赋值
    configurable: false, // 是否可删除对象中的属性
    value: 2 // 设置name属性为2
  })

下面就简易的实现一下MVVM中的双向绑定(视图改变,数据改变;数据改变,视图改变)


MVVM
  let obj = {};
  let temp = {};
  Object.defineProperty(obj, 'name', {
    get() { // 取obj的name属性会触发
      return temp.name;
    },
    set(val) { // 给obj赋值会触发,而且会触发get
      temp['name'] = val;
      input.value = obj.name;
      div.innerHTML = obj.name;
    }
  })

  obj.name = '';  // 页面刚加载调用get方法
  input.value = obj.name; // js中可以直接用id名调用
  input.addEventListener('input', function() {
    obj['name'] = this.value;  // 输入框值变化时调用set
    div.innerHTML = obj.name;
  })

效果如下:


视图改变数据 数据改变视图

相关文章

  • Vue双向绑定

    Vue双向绑定 Obejct.defineProperty的setter/getter和发布订阅 Vue双向绑定原...

  • VUE(面试题)

    1、vue双向绑定原理vue2.x:vue双向绑定的原理是利用了Object.defineProperty()这个...

  • Vue实现数据双向绑定的原理

    Vue实现数据双向绑定的原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

  • 如何用js手动实现一个数据双向绑定

    双向数据绑定: 我们这里拿vue举例,vue中的双向数据绑定主要是利用Object.defineProperty(...

  • Vue 几个要点(一)

    Vue是单向数据流,不是双向绑定 Vue的双向绑定不过是语法糖 Object.defineProperty是用来做...

  • vue 学习基础一

    1、关于vue数据双向绑定的原理解析 obj.defineProperty属性 关于defineProperty的...

  • vue.js 核心知识点八

    目录 - 8.1 Vue实现数据双向绑定的原理:Object.defineProperty() - 8.2 vue...

  • Vue双向绑定的秘密:defineProperty

    我们开发常用vue的双向绑定,他双向绑定究竟是怎么实现的呢?其实是用到了Object.defineProperty...

  • 面试题(vue)

    1,手写vue数据双向绑定Object.defineProperty() Object.definePropert...

网友评论

    本文标题:Vue双向绑定的秘密:defineProperty

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