最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript觀察者模式實(shí)現(xiàn)自動刷新效果

 更新時(shí)間:2017年09月05日 11:44:52   作者:在這個(gè)肆意的青春歲月  
這篇文章主要為大家詳細(xì)介紹了javascript觀察者模式實(shí)現(xiàn)自動刷新效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了js觀察者模式實(shí)現(xiàn)自動刷新的具體代碼,供大家參考,具體內(nèi)容如下

// author wangbinandi@gmail.com

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

长顺县| 铜川市| 广汉市| 南开区| 泗洪县| 光山县| 定安县| 师宗县| 潢川县| 图们市| 怀柔区| 四平市| 拜城县| 万全县| 吴忠市| 保康县| 建昌县| 西贡区| 镇康县| 苍南县| 平陆县| 新源县| 渑池县| 乌兰察布市| 浪卡子县| 福泉市| 萝北县| 二手房| 宜黄县| 昌黎县| 崇左市| 海宁市| 醴陵市| 托克托县| 深圳市| 印江| 漳浦县| 开阳县| 扎兰屯市| 全椒县| 广水市|