千家信息网

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

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇"javascript观察者模式怎么实现自动刷新效果"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我
千家信息网最后更新 2025年01月31日javascript观察者模式怎么实现自动刷新效果

这篇"javascript观察者模式怎么实现自动刷新效果"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"javascript观察者模式怎么实现自动刷新效果"文章吧。

具体代码如下

// 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;

以上就是关于"javascript观察者模式怎么实现自动刷新效果"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0