本文實例為大家分享了js觀察者模式實現(xiàn)自動刷新的具體代碼,供大家參考,具體內容如下
// 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;以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答