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;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。