IFE_02_dynamicDataBinding_01
来源:互联网 发布:成都php培训学费 编辑:程序博客网 时间:2024/05/18 02:25
总结
主要利用Object.defineProperty
、Object.keys
遍历等。
代码
<!DOCTYPE html><html><head> <title>dymanic_data_binding_01</title> <meta charset="utf-8"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/default.min.css"> <style type="text/css"> </style></head><body> <ol>要求: <li>传入参数只考虑对象,不考虑数组</li> <li>new Observer返回一个对象,其data属性要能够访问到传递进去的对象</li> <li>通过data访问属性和设置属性的时候,均能打印出对应的信息</li> </ol> <pre><code> let app1 = new Observer({ name: 'youngwind', age: 25 }); let app2 = new Observer({ university: 'bupt', major: 'computer' }); app1.data.name // 你访问了 name app1.data.age = 100; // 你设置了 age,新的值为 100 app2.data.university // 你访问了 university app2.data.major = 'science'; // 你设置了 major,新的值为 science </code></pre></body><script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js"></script><script type="text/javascript"> hljs.initHighlightingOnLoad(); function Observer (data) { if (_getType(data) !== 'object') throw 'wrong data type'; this.data = {}; Object.keys(data).forEach(function (v, i) { Object.defineProperty(this.data, v, { get: function () { console.log(`你访问了 ${v}`); return data; }, set: function (value) { console.log(`你设置了 ${v},新的值为 ${value}`); data = value; } }); }, this); } function _getType (obj) { return Object.prototype.toString.call(obj).match(/ .+(?=\])/)[0].trim().toLowerCase(); }</script></html>
0 0
- IFE_02_dynamicDataBinding_01
- 【有容云干货-容器系列】Kubernetes调度核心解密:从Google Borg说起
- git使用tag恢复到以前的版本
- JAVA(2017-023-02)
- 安卓异步消息处理机制ALooperRoster
- 淘宝网商品SKU系统设计经验分享
- IFE_02_dynamicDataBinding_01
- ajax中post方法直接返回数字(以0开头)开头出错
- 结构型设计模式-装饰器模式
- 6.7、order、范围操作、topCount、item
- ADF中常用各种类型转换
- Linux环境搭建:Ubuntu 16.04 + JDK + Eclipse + Python
- 干货,收藏
- 第二十二天作业
- jquery验证表单,仿Toast提示效果