Javascript 监听简单对象的属性变化

1//简单对象的属性的变化监控 2//通过setAttr改变属性的值 3 4var o = { 5  'a':2, 6  'b':3 7}; 8function watch(obj, attr, callback){ 9   if(typeof obj.defaultValues == 'undefined'){ 10      obj.defaultValues = {}; 11      for(var p in obj){ 12 if(typeof obj[p] !== 'function' && typeof obj[p] !== 'object')  13 obj.defaultValues[p] = obj[p]; 14      } 15   } 16   if(typeof obj.setAttr == 'undefined'){ 17      obj.setAttr = function(attr, value){   18   if(this[attr] != value){ 19     this.defaultValues[attr] = this[attr]; 20 this[attr] = value; 21 return callback(this); 22   } 23   return this;    24    }; 25   }  26} 27watch(o, 'a', function(obj){ 28  console.log(obj); 29}); 30o.setAttr('a',4);
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

js堆和栈

浅析js中堆内存和栈内存我们常遇见的varletconst区别cont定义的基本类型不能改变,但是定义的对象是可以通过修改对象属性等方法来改变的consta1;console.log(a)//a;cosnole.log(a2)//报错constb;b.name1;console.log(b)//name:1con

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

Object.keys()详解

Object.keys():遍历对象的所有属性,该方法返回一个数组,数组内容就是对象的所有键名。传入对象,返回属性名varobj{'a':'meng','b':'lin'}console.log(Object.keys(obj));//'a','b'varobj{100:"a",2:"b",7:"c"};cons

vue的watch监听

vue的watch监听函数watch用来响应数据的变化,watch的用法大致有以下三种:1.监听某个变量watch:{name(newName,oldName){console.log(newName)//改变前的值console.log(oldName)//改变后的值

Vue中计算属性和 watch的区别

通俗来讲,既能用computed实现又可以用watch监听来实现的功能,推荐用computed,重点在于computed的缓存功能computed计算属性是用来声明式的描述一个值依赖了其它的值,当所依赖的值或者变量改变时,计算属性也会跟着改变;watch监听的是已经在data中定义的变量,当该变量变化时,会触发watch中的方法;根据

Javascript 监听简单对象的属性变化 - HelloWorld