--- title: Object.unobserve() slug: Web/JavaScript/Reference/Global_Objects/Object/unobserve translation_of: Archive/Web/JavaScript/Object.unobserve ---
{{JSRef}} {{non-standard_header}}

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

语法

Object.unobserve(obj, callback)

参数

obj
需要停止观察的对象。
callback
通过 observer 给 obj 对象设置的回调函数.

描述

Object.unobserve() 用来在 {{jsxref("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: <obj>, 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: <obj>, oldValue: 25, type: 'update'}]

Object.unobserve(person, function (changes) {
  console.log(changes);
});

person.age = 63;
// [{name: 'age', object: <obj>, oldValue: 40, type: 'update'}]
// 回调函数将会被调用

浏览器兼容性

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatChrome("36")}} {{CompatNo}} {{CompatNo}} {{CompatOpera("23")}} {{CompatNo}}
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatNo}} {{CompatChrome("36")}} {{CompatNo}} {{CompatNo}} {{CompatOpera("23")}} {{CompatNo}}

相关链接