博客
关于我
MVVM源码注释
阅读量:376 次
发布时间:2019-03-05

本文共 1179 字,大约阅读时间需要 3 分钟。

 MVVM代码注释如下:

function MVVM(options) {    //给实例新增一个$options属性,.并且把传递过来的配置进行暂存    this.$options = options;    //在实例上新增一个_data 保存传递过来的data数据    var data = this._data = this.$options.data;    //保存this 为了之后使用this的时候保证this指向的正确性    var me = this;    //通过Object.keys取出data中每一项数据的属性名,然后遍历调用_proxy方法    Object.keys(data).forEach(function(key) {        // 数据代理        me._proxy(key);    });    //为data所有数据进行劫持 结合订阅发布模式    observe(data, this);    //增加模版解析    this.$compile = new Compile(options.el || document.body, this)}MVVM.prototype = {    $watch: function(key, cb, options) {        new Watcher(this, key, cb);    },    _proxy: function(key) {//实现数据代理        var me = this;//暂存this 保证this的指向正确  这里的this还是实例vm        //通过defineProperty方法在实例(vm)上新增所有与data中属性所对应属性,并且为该属性添加get和set方法        Object.defineProperty(me, key, {//vm.name            configurable: false,            enumerable: true,            get: function proxyGetter() {                //实现了vm代理data中数据的读操作                return me._data[key];            },            set: function proxySetter(newVal) {//vm.name = "bb"                //实现了vm代理data中数据的写操作                me._data[key] = newVal;            }        });    }};

 

转载地址:http://bbhg.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0024---SelectionKey API
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0050---Netty核心模块1
查看>>
Netty工作笔记0057---Netty群聊系统服务端
查看>>
Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
查看>>
Netty工作笔记0063---WebSocket长连接开发2
查看>>
Netty工作笔记0070---Protobuf使用案例Codec使用
查看>>
Netty工作笔记0072---Protobuf内容小结
查看>>
Netty工作笔记0077---handler链调用机制实例4
查看>>
Netty工作笔记0081---编解码器和处理器链梳理
查看>>
Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
查看>>
Netty工作笔记0085---TCP粘包拆包内容梳理
查看>>