博客
关于我
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/

你可能感兴趣的文章
neo4j图形数据库Java应用
查看>>
Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013
查看>>
Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001
查看>>
Neo4j图数据库的数据模型_包括节点_属性_数据_关系---Neo4j图数据库工作笔记0002
查看>>
Neo4j安装部署及使用
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(1):图数据库Neo4j介绍
查看>>
Neo4j(2):环境搭建
查看>>
Neo4j(3):Neo4j Desktop安装
查看>>
Neo4j(4):Neo4j - CQL使用
查看>>
Neo图数据库与python交互
查看>>
NEO改进协议提案1(NEP-1)
查看>>
Neo私链
查看>>
NervanaGPU 项目使用教程
查看>>
Nerves 项目教程
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
查看>>