Object.observe简介
现在,双向数据绑定是客户端应用程序的关键功能之一。 如果没有数据绑定,则每当模型发生更改时,开发人员都必须处理大量逻辑以将数据手动绑定到视图。 像Knockout , AngularJS和Ember这样的JavaScript库都支持双向绑定,但是这些库使用不同的技术来检测更改。
淘汰赛和灰烬使用可观察到的东西。 可观察对象是包装在模型对象属性周围的函数。 只要相应对象或属性的值发生更改,就会调用这些函数。 尽管这种方法行之有效,并且可以检测并通知所有更改,但它却剥夺了使用纯JavaScript对象的自由,因为现在我们必须处理函数。
Angular使用脏检查来检测更改。 这种方法不会污染模型对象。 它为添加到模型中的每个对象注册观察者。 只要Angular的摘要周期开始并且数据有任何更改,就会执行所有这些观察程序。 这些更改由相应的观察者处理。 该模型仍然是一个普通对象,因为没有围绕它创建包装器。 但是,随着观察者数量的增加,此技术会导致性能下降。
什么是Object.observe ?
Object.observe (又名Oo )是作为ECMAScript 7的一部分添加到JavaScript的功能,以支持浏览器中本机的对象更改检测。 尽管ES7尚未完成,但是基于闪烁的浏览器(Chrome和Opera)已经支持此功能。
由于Object.observe将由浏览器本地支持,并且可以直接在对象上运行而无需在其周围创建任何包装,因此该API既易于使用,又是性能的双赢。 如果浏览器支持Object.observe则可以实现双向绑定,而无需外部库。 这并不意味着一旦实现Oo ,所有现有的双向绑定库都将Oo 。 在使用Oo检测到更改后,我们仍然需要它们有效地更新UI。 此外,如果不是所有目标浏览器都支持Oo ,则库将在内部填充更改检测的逻辑。
观察对象的属性
现在,您已经了解了Oo的优点,让我们来看一下它的实际作用。
observe()方法是在Object定义的异步静态方法。 它可用于查找对象的更改,它接受三个参数:
- 要观察的对象
- 检测到更改时要调用的回调函数
- 一个可选数组,其中包含要注意的更改类型
让我们看一个使用该方法的例子。 考虑以下代码段:
var person = {name: 'Ravi',country: 'India',gender: 'Male'
};function observeCallback(changes){console.log(changes);
};Object.observe(perso
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
