[英]How to use immutable objects to replace observer pattern
不变的数据结构并不能完全取代观察者模式的功能,它们只是使其变得多余。 不可变性只是表示“无法更改”,因此观察者模式会告诉您对象何时更改,使用不可变对象意味着它们将永远无法更改(如果您确实需要添加或删除值,那么您将创建一个新的不可变对象对象),因此您无需担心处理更改事件。 您可以使用Immutable.js来获取不可变的Map或List或Stacks或其他复杂的数据结构(并且您可能希望在该页面上阅读不可变的案例 )。 或者,您可以使用普通的javascript(ES5.1中引入的Object.freeze函数)使对象文字不可变:
var o = { a: 99 };
Object.freeze(o); // make o immutable
o.a = 100; // a still equals 99, this assignment silently fails because o is immutable
我认为您误解了这一信息。
不变的数据和观察者(反应式编程)是很好的结合。 仅仅是Object.observe
变得多余-如果Object
不变,那么您在这里到底要observe
什么?
链接到的库是针对(尚未)支持Object.observe
的ECMA标准的浏览器的兼容性补丁。 由于标准撤回了接口,因此该接口不再有效。 这并不意味着某人不能将其保留为库,而只是意味着它不再是一个兼容性补丁。 这就是评论的意思,IMO。
在Javascript框架中进行更改及其检测是关于该主题的不错的阅读。 最后一点,Om基本上讨论了对不可变数据的反应方法,其中有很多链接需要进一步研究。 当然,我仍然建议您阅读整篇文章-它很好地概述了状态更改方法多年来的变化,因此,为您提供了所需的详细信息-新方法解决了旧方法存在的问题( 50岁:P)范式。 请注意,只有状态本身是不可变的-您可以很好地切换状态,这就是您要观察的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.