我必须实现一个类似于存储库模式的对象,它将维护一个项目列表。 repo 看起来像这样:
var repository = {
data: [],
getAll: function() {
return this.data;
},
update: function() { ... }
}
repo 数据的最终消费者将是某个组件。我正在考虑利用对 repo 数据数组的引用,以便在 DOM 发生变化时更新它:
function ItemList() {
this.data = repository.getData();
when (this.data is changed) {
update the view
}
this.userInput = function() {
repository.update();
}
}
虽然它感觉很简洁并且据说使用了合法的功能,但这真的是个好主意吗?我应该改用存储库中的观察者/通知吗?
var repository = {
...
onDataChange: function(callback) { ... }
}
您可以在此处找到示例(使用 Angular):http://jsfiddle.net/xen8m148/
最佳答案
取决于您如何实现绝对非内置的“已更改” =) 通常,如果您想减少虚假处理,发布/订阅模型会更好。如果您不关心浪费的 CPU 周期,那么您可以使用 Object.observe
来查看对象变化。
不过,从软件工程的 Angular 来看,您似乎在两个所有者之间共享您的数据,而这(而不是您如何监听更改)在未来可能是一个更大的问题。
关于javascript - 在 JavaScript 中,依赖对 "listen"的对象引用进行更改是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210884/