美文网首页
数据绑定(mvvm原理)

数据绑定(mvvm原理)

作者: Egde | 来源:发表于2017-12-09 15:07 被阅读0次

    这只是将我的问题抛出来,期待我后期来修复。以面试题为例(此例跑不通)

    vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。


    /*

    * TODO

    * 数据绑定问题,这就是mvvm框架的原理性东西。

    * 会涉及到闭包,上下文的改变

    * --------------------------------------------

    * 深入一点地话会涉及到:

    *    依赖收集?

    */

    # 题目

    有一个全局变量a,有一个全局函数b,实现一个方法bindData,执行后。

    a的任何赋值都会触发b的执行

    # 考点

    1: 涉及到底层的方法就是get和set

    2: defineProperty使用

    3: 闭包

    # 思路

    1:

    # 代码,但是这根本不能使用,我不知道怎么弄了

    function bindData(target, event) {

    for (var key in target) {

    if (target.hasOwnProperty(key)) {

    (function() {

    var v = target[key]

    // 给对象上的属性定义一些规矩

    Object.defineProperty(target, key, {

    get: function() {

    return v

    },

    set: function(_value) {

    v = _value

    event.call(this)  // 这里就是改变函数(event)的上下文了

    }

    })

    })()

    }

    }

    }

    相关文章

      网友评论

          本文标题:数据绑定(mvvm原理)

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