javascript观察者模式实现自动刷新效果
本文实例为大家分享了js观察者模式实现自动刷新的具体代码,供大家参考,具体内容如下
//authorwangbinandi@gmail.com constobservable=obj=>{ constobservers=Symbol(); constset=function(target,key,value){ constresult=Reflect.set(target,key,value); //console.log("setkey:"+key); if(target[observers].has(key)){ target[observers].get(key).forEach(observer=>observer()); } returnresult; } constget=function(target,key){ constresult=Reflect.get(target,key); //console.log("getkey:"+key); if(arguments.callee.caller){ if(!target[observers].has(key)){ target[observers].set(key,newSet()) } target[observers].get(key).add(arguments.callee.caller); } returnresult; } obj[observers]=newMap();//string=>Set() returnnewProxy(obj,{set,get}); }; constautorun=fn=>fn(); varperson=observable({ firstName:'Matt', lastName:'Ruby', age:18, weight:50 }); autorun(function(){ console.log('autorun.getAge:'+person.firstName+''+person.age); }); autorun(function(){ console.log('autorun.getName:'+person.firstName+''+person.lastName); }); person.age=19; person.weight=55; person.firstName='test'; person.lastName='MyLast'; console.log(person.lastName); person.age=20;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。