阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Object.unobserve()

      非标准
      该特性是非标准的,请尽量不要在生产环境中使用它!

      Object.unobserve() 是用来移除通过 Object.observe()设置的观察者的方法。

      语法

      Object.unobserve(obj, callback)
      

      参数

      obj

      需要停止观察的对象。

      callback

      通过 observer 给 obj 对象设置的回调函数.

      描述

      Object.unobserve() 用来在 Object.observe() 被调用以后,从对象上移除一个观察者。

      这个回调函数必须是一个函数的引用,而不能是一个匿名函数。因为这个引用将被用来移除之前设置的观察者方法。 给 Object.unobserve() 传入匿名函数作为回调是不起作用的, 它不能移除任何观察者方法。

      例子

      观察一个对象

      var obj = {
        foo: 0,
        bar: 1
      };
      
      var observer = function(changes) {
        console.log(changes);
      }
      
      Object.observe(obj, observer);
      ​
      obj.newProperty = 2;
      // [{name: 'newProperty', object: , type: 'add'}]
      
      Object.unobserve(obj, observer);
      
      obj.foo = 1;
      // 回调函数不会被调用
      

      使用匿名函数

      var person = {
        name : 'Ahmed',
        age : 25
      };
      
      Object.observe(person, function (changes) {
        console.log(changes);
      });
      
      person.age = 40; 
      // [{name: 'age', object: , oldValue: 25, type: 'update'}]
      
      Object.unobserve(person, function (changes) {
        console.log(changes);
      });
      
      person.age = 63;
      // [{name: 'age', object: , oldValue: 40, type: 'update'}]
      // 回调函数将会被调用
      
      

      相关链接

      目录
      目录