Vue2源码【6】数据代理

经过对概念的区分,我认为:数据代理,其原理是数据劫持。数据代理的原理是最简单的。

数据代理,其原理是数据劫持

实现效果:让 this['某属性'] 代理 this._data['某属性']

原理: 数据劫持。可以选择去使用 Object.defineProperty api。

我们可以在Vue的构造函数中执行一个 _proxy 函数

_proxy.call(this, options.data);/*构造函数中*/

function _proxy (data) {
    const that = this;
    Object.keys(data).forEach(key => {
        Object.defineProperty(that, key, {
            configurable: true,
            enumerable: true,
            get: function proxyGetter () {
                return that._data[key];
            },
            set: function proxySetter (val) {
                that._data[key] = val;
            }
        })
    });
}
文章目录
  1. 数据代理,其原理是数据劫持