最新国产好看的视频,伊人天堂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)文章

最新評論

嘉祥县| 巩义市| 鸡西市| 盐城市| 建湖县| 同仁县| 贵定县| 封丘县| 湄潭县| 三亚市| 滦平县| 九江县| 罗甸县| 鄂尔多斯市| 泾阳县| 泰和县| 吴堡县| 辽源市| 上犹县| 开封县| 浪卡子县| 辽阳县| 武夷山市| 建水县| 定西市| 麦盖提县| 寿阳县| 彰武县| 辽宁省| 大城县| 韩城市| 尉氏县| 靖宇县| 贵港市| 正镶白旗| 乌鲁木齐市| 开江县| 喀喇沁旗| 扎囊县| 来安县| 海丰县|