首页 > 编程 > JavaScript > 正文

javascript观察者模式实现自动刷新效果

2019-11-19 15:33:01
字体:
来源:转载
供稿:网友

本文实例为大家分享了js观察者模式实现自动刷新的具体代码,供大家参考,具体内容如下

// author wangbinandi@gmail.comconst observable = obj => {  const observers = Symbol();  const set = function(target, key, value) {    const result = Reflect.set(target, key, value);    //console.log("set key:" + key);    if ( target[observers].has(key) ) {      target[observers].get(key).forEach(observer => observer());    }    return result;  }  const get = function(target, key) {    const result = Reflect.get(target, key);    //console.log("get key:" + key);    if (arguments.callee.caller) {      if (!target[observers].has(key)) {        target[observers].set(key, new Set())      }      target[observers].get(key).add(arguments.callee.caller);    }    return result;  }  obj[observers] = new Map(); // string => Set()  return new Proxy(obj, {set, get});};const autorun = fn => fn();var person = 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;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表