美文网首页
监听js变量方法

监听js变量方法

作者: peakol | 来源:发表于2018-01-11 15:36 被阅读0次

    监听js变量方法

    在日常工作中我们经常会遇到某个变量依赖另一个变量的问题,但我们有时会像下边这样

    var a = 1;
    var b = a + 1;
    console.log("a: "+a);//1
    console.log("b: "+b);//2
    a = 2;
    console.log("a: "+a);//2
    console.log("b: "+b);//2
    

    当向上面这种情况时,其实我们想的是变量b随着变量a去变化,但事实上并非如此,我们需要去监听变量a,当a发生变化时,我们需要b随之发生变化。这时有一个比较好的处理方法,其实类似于vue的双向数据绑定原理,利用Object.defineProperty(),本身对对象的每个属性进行监听,其实就相当于给对象的每个对象设置一个setter和getter,当对对象进行操作时,我们同时激活相应的函数,在这个情境下,我们可以将本身改变的变量a作为对象中的这样一个属性或者一个属性去承载这个变量,当a发生变化时,我们可以触发set函数,这样我们把依赖a的b的表达式写在set函数中,这样就做到了完美的监听

        var a =1,b;
          var obj = {
    
          }
          Object.defineProperty(obj,'a',{
              get:function() {
                  return a
              },
              set: function(value) {
                  a = value;
                  b = a + 1;
              }
          })
          obj.a = 1;
          console.log("a:"+a)//1
          console.log("b:"+b)//2
          obj.a = 2;
          console.log("a:"+a)//2
          console.log("b:"+b)//3
    
    

    这样就完成了真正的随之改变,就好像vue的双向绑定原理

    相关文章

      网友评论

          本文标题:监听js变量方法

          本文链接:https://www.haomeiwen.com/subject/jjftoxtx.html