Javascript 模式 : Conditional event handler

标签 javascript events event-handling design-patterns

给出例如某种类型的类实例具有状态(例如“事件”、“非事件”等)。该实例还将点击事件附加到例如一个链接,但事件处理程序根据实例的状态做一些不同的事情。

伪代码:

IF instance state IS 'active' AND link is clicked THEN call function A
IF instance state IS 'inactive' AND link is clicked THEN call function B
…

我想知道什么是正确处理这种情况的良好做法:

  • 通常使用哪些模式来实现这一目标?
  • 您是否在事件处理程序中使用条件?
  • 或者当状态改变时绑定(bind)和解除绑定(bind)处理程序?
  • 我是否遗漏了一些明显的其他/更好的解决方案?

更新

在阅读到目前为止的答案时,似乎有一种在处理程序中使用条件的强烈趋势。虽然我暗暗希望我可能错过了一个替代方案,但我已经预料到了这一点。

我喜欢@J-P 的方法,因为它分别保持方法和状态的配对,这似乎比简单的 switchif/else 语句更具可扩展性和可维护性. 但是,我很想知道这个问题是否在其他地方以不同的方式解决,也许使用来自不同语言的示例?

最佳答案

通常使用哪些模式来实现这一目标?类似于 this
您是否在事件处理程序中使用条件?是的,看例子
或者当状态改变时绑定(bind)和解除绑定(bind)处理程序?不,但这是可能的。
我是否遗漏了一些明显的其他/更好的解决方案?我不这么认为

关于Javascript 模式 : Conditional event handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5471607/

相关文章:

javascript - Mocha React Native 路由器编译错误

javascript - 在动态表javascript中显示对象数组

events - 模拟 subview 模型与父 View 模型交互的方法?

css - 一种使用 CSS3 创建 hoverIntent 类型延迟效果的方法?

java - 如何监听 JCombobox 选择事件

java - 使用 Vert.x for Java 的任何好的 Redis 客户端 API?

javascript - 雪花中的 ARRAY_REMOVE()?

python - 在 MySQL/SQLAlchemy 中计算事件持续时间的最佳方法?

javascript - 事件监听器内的 'this' 是否始终引用同一个对象?

javascript - 使用 :checked 配置时,输入(复选框)在 IE8 中不起作用