gpt4 book ai didi

javascript - 观察者模式问题 - JavaScript 对象从父数组中删除自身?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:33 24 4
gpt4 key购买 nike

我正在尝试编写一个遵循观察者模式的对象关系,其中观察者关心发生在主题上的一组特定事件。

我不确定这是否是 100% 标准的,但按照我构建它的方式,这些事件对象是在观察者中定义的,具有在事件发生时将触发的自定义回调。当一个事件发生在这个主题上时,它会遍历所有它的观察者并查看谁在观看这个事件。如果它发现观察者正在监视这个事件,它会触发观察者事件的回调。

由于我希望我的观察者能够灵活地动态添加和删除关心观察的事件,我需要事件对象能够在运行它的回调后删除自身......比如说,对于例如,如果我的观察者只想响应一次事件,则不再监视它。

这似乎是个好计划,但我知道 JavaScript 对象不能对自身调用 delete()。

我很好奇是否还有其他人遇到过这个问题并提出了有效的解决方案。

我唯一的想法是我可以将对父观察者对象的引用传递给它的子事件,然后当回调发生时,我可以在父对象中调用一个方法...类似于 removeEvent(this) 将事件本身传递给此函数。然后 removeEvent 函数可以从它的事件数组中拼接出事件。唯一复杂的问题是在数组中找到此事件对象的位置。 (对此也提出建议,谢谢!)。

在此先感谢您的帮助!

最佳答案

如果您在 removeEvent 方法中传递对事件对象的引用,那么您可以循环遍历所有事件并使用 == 运算符进行测试 - - 由于您传入的事件对象是一个引用,因此当与循环中相应的事件对象进行比较时,它将评估为真,因为它们在内存中引用相同的对象。

关于javascript - 观察者模式问题 - JavaScript 对象从父数组中删除自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com