美文网首页
深入理解和手写--vue的数据代理原理

深入理解和手写--vue的数据代理原理

作者: Raral | 来源:发表于2021-01-20 11:28 被阅读0次

概述

在vue中对数据的读操作和写操作都是通过代理到vm中实现的

  1. 数据代理: 通过一个对象代理对另一个对象中的属性的操作(读/写)
  2. vue数据代理: 通过vm 对象来代理data对象中所有属性的操作
  3. 优点: 更方便的操作data数据
const vm = new MVVM({
    el: "#test",
    data: {
        name: "feifei"
    }
})
console.log(vm.name, vm); //feifei vm代理data数据的读操作
vm.name = "xiaoxiao"; //vm代理data数据的写操作
console.log(vm._data.name, vm.name);
/**
 * 一般开发者只需要调用 vm.name 进行访问和读写
*/

基本实现流程

代码实现数据代理 vm.text == vm._data.text

(function() {
    function Vue(options) {
        // 配置对象保存到vm
        this.$options = options || {};
        var data = this._data = this.$options.data;
        var me = this;
        //数据代理 vm.xxx => vm._data.xxx 不需要递归
        this.convertData(data);


    }

    Vue.prototype = {
        convertData: function(data) {
            var me = this;
            Object.keys(data).forEach(key => {
                me._proxyData(key);
            })
        },
        _proxyData: function(key) {
            var me = this;
            Object.defineProperty(me, key, {
                configurable: false,
                enumerable: true,
                // writable: true,
                get: function proxyGetter() {
                    return me._data[key];
                },
                set: function proxySetter(newVal) {
                    me._data[key] = newVal;
                }
            })
        }


    }
    return window.Vue = Vue;
})()

相关文章

  • 深入理解和手写--vue的数据代理原理

    概述 在vue中对数据的读操作和写操作都是通过代理到vm中实现的 数据代理: 通过一个对象代理对另一个对象中的属性...

  • [学习vue]源码解析01

    今天听了一个大牛讲课 除了膜拜 还是膜拜 深入理解Vue的底层原理 通过一个手写的过程可以深入的理解一下vue的底...

  • Vue源码解析的理解总结

    1.对数据代理的理解 在vue中是有数据代理的,Vue的实例对象代理了data对象,Vue的实例对象是代理者,da...

  • 深入理解和手写--Vue中的模板解析原理

    基本流程 将el的所有子节点取出,添加到一个新建文档fragment对象中 对fragment 中所有层次子节点递...

  • vue 双向绑定实现

    起因 用vue这么久,也了解过它的双向绑定原理,但是没有实现过,所以还是实地手写一个深入理解下。 它是什么 单向绑...

  • vue实现原理解析及一步步实现vue框架

    深入解析vue 1实现原理,并实现vue双向数据绑定模型vueImitate,此模型(vueImitate)只适用...

  • Vue的34道题

    1、如何理解MVVM原理? MVVM的实现原理 2、响应式数据的原理是什么? 响应式数据与数据依赖基本原理vue双...

  • 36.响应式原理

    手写响应式原理-vue3 手写响应式原理-vue2 非常感谢王红元[https://link.juejin.cn/...

  • VUE双向绑定原理(深入响应式原理)

    vue官网-深入响应式原理 深入响应式原理

  • vue响应式原理

    谈谈阅读了vue深入响应式原理后的理解 1.响应式原理 在生成vue实例时,为对传入的data进行遍历,使用Obj...

网友评论

      本文标题:深入理解和手写--vue的数据代理原理

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