博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 对象数据观察者实现
阅读量:5364 次
发布时间:2019-06-15

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

var observer = function (originalData) {    var newData = {};    newData.observer = {};    newData.$data = {};    for (var key in originalData) {        (function (key) {            newData.$data[key] = originalData[key];            Object.defineProperty(newData, key, {                set: function (val) {                    newData.$data[key] = val;                    this.dispatch(key, val);                },                get: function () {                    return newData.$data[key];                }            });            newData.observer[key] = [];        })(key);    }    newData.on = function (key, callback) {        newData.observer[key].push(callback);    };    newData.dispatch = function (key, val) {        for (var i in newData.observer[key]) {            newData.observer[key][i](val);        }    };    return newData;};var data = observer({age: 1, name: 'mahuan'});data.on('name', function (val) {    console.log('hello, ' + val);});data.on('age', function (val) {    console.log('oh, you are ' + val);});data.name = "mahuan";data.age = 3;

 

hello, mahuan

oh, you are 3

转载于:https://www.cnblogs.com/mahuan2/p/7079419.html

你可能感兴趣的文章
人工智能实验报告一
查看>>
用LR12录制app,用LR11跑场景,无并发数限制,已试验过,可行!
查看>>
python 多线程就这么简单(转)
查看>>
oracle 简述
查看>>
ajax如何向后台传递数组,在后台该如何接收的问题(项目积累)
查看>>
Solr之java实现增删查操作
查看>>
httpClient连接工具类实测可用
查看>>
CDOJ 1965 连通域统计【DFS】
查看>>
飞机大战3-我的飞机
查看>>
c#接口
查看>>
MyEclipse部署Jboss出现java.lang.OutOfMemoryError: PermGen space
查看>>
ZOJ 1133
查看>>
HIVE和HADOOP的一些东西
查看>>
alibaba / zeus 安装 图解
查看>>
Planned Delivery Time as Work Days (SCN discussion)
查看>>
Ubuntu:让桌面显示回收站
查看>>
Android上传头像代码,相机,相册,裁剪
查看>>
git 安装体验
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>