美文网首页
自己动手实现MVVM

自己动手实现MVVM

作者: wyq_0bed | 来源:发表于2017-06-21 23:00 被阅读0次

1、数据劫持(vue):通过Object.defineProperty()去劫持数据每个属性对应的getter和setter
2、脏值检测(angular):通过特定事件比如input,change,xhr请求等进行脏值检测。
3、发布-订阅模式(backbone):通过发布消息,订阅消息进行数据和视图的绑定监听。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<script>
// var a = ['1','2','3','4','5'];
//// var c = {'wyq':1,'ldx':2};
// var b = Object.keys(a).forEach(key => {
// console.log(key+"//"+a[key]);
// });
// console.log(b);
function observe(data) {
//Object.keys(如果传值是数组返回一个数组,如果是对象返回一个数组索引值是key值);
if (!data || typeof data !== 'object') {
return;
}
// Object.keys(data).forEach(key => {
// observeProperty(data, key, data[key])
// })
return new Observer(data);
}
function observeProperty(obj, key, val) {
observe(val);
//参数
// object
// 必需。 要在其上添加或修改属性的对象。 这可能是一个本机 JavaScript 对象(即用户定义的对象或内置对象)或 DOM 对象。
// propertyname
// 必需。 一个包含属性名称的字符串。
// descriptor
// 必需。 属性描述符。 它可以针对数据属性或访问器属性。

    Object.defineProperty(obj, key, {
        enumerable: true,   // 可枚举
        configurable: true, // 可重新定义
        get: function () {
            console.log(val);
            return val;
        },
        set: function (newVal) {
            if (val === newVal || (newVal !== newVal && val !== val)) {
                return;
            }
            console.log('数据更新啦 ', val, '=>', newVal);
            val = newVal;
        }
    });
}
var data = {
    a: 'hello'
}
observe(data);

</script>
</body>
</html>

相关文章

  • 自己动手实现MVVM

    1、数据劫持(vue):通过Object.defineProperty()去劫持数据每个属性对应的getter和s...

  • 自己动手来学习原理系列

    自己动手实现1 - 事件总线自己动手实现2 - SPI 可扩展框架自己动手实现3 - 过滤器链的设计与实现

  • 模拟Vue实现双向绑定

    模拟Vue实现双向绑定 使用Vue也有一段时间了,作为一款MVVM框架,双向绑定是其最核心的部分,所以最近动手实现...

  • 原生实现一个react-redux的代码示例

    自己动手实现一个react-redux之前试过自己动手实现一个redux,这篇blog主要记录动手实现一个reac...

  • 原生实现一个react-redux

    自己动手实现一个react-redux 之前试过自己动手实现一个redux,这篇blog主要记录动手实现一个rea...

  • MVVM

    要实现一个我们自己的mvvm库,我们首先需要做的事情不是写代码,而是整理一下思路,捋清楚之后再动手绝对会让你事半功...

  • vue入门

    MVVM的介绍 vue的设计思想是基于MVVM实现的,那么什么是MVVM呢?简单介绍: 组成 MVVM ===> ...

  • iOS 使用MVVM模式实现Cell的点击响应

    iOS 使用MVVM模式实现Cell的点击响应 iOS 使用MVVM模式实现Cell的点击响应

  • 初识Vue

    1. MVVM模式 Vue采用MVVM(Model-View-ViewModel)模式实现,MVVM模式由MVC演...

  • ARouter与MVVM

    参考文章 : (一)Android官方MVVM框架实现组件化之整体结构 (二)Android官方MVVM框架实现组...

网友评论

      本文标题:自己动手实现MVVM

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