Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript自定义事件或普通函数调用中有什么更好?_Javascript_Jquery_Jquery Events - Fatal编程技术网

JavaScript自定义事件或普通函数调用中有什么更好?

JavaScript自定义事件或普通函数调用中有什么更好?,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,在Js代码中,如果有两个Js对象(一个处理UI(例如表单),另一个向服务器发送请求) 使用自定义事件或普通函数调用在这些组件之间进行交互的更好方法是什么 比如说 clickForm = function(){ validateForm(); $(document).trigger("submitForm",{"userData":userData});//Event submitForm listened by formMana

在Js代码中,如果有两个Js对象(一个处理UI(例如表单),另一个向服务器发送请求)

使用自定义事件或普通函数调用在这些组件之间进行交互的更好方法是什么

比如说

  clickForm = function(){
      validateForm();
      $(document).trigger("submitForm",{"userData":userData});//Event submitForm listened by formManager submitForm method.
  }

clickForm
方法是UI组件的一部分,该组件负责管理HTML代码的UI交互。此函数通常在单击提交按钮时调用

submitForm
方法是核心对象的一部分,其职责是向服务器发出请求,解析响应,然后将结果发送到UI组件

这两种方法中哪一种是更好的交互方式。有什么建议吗?

“更好”是个棘手的概念。:-)

使用事件可以更松散地耦合对象,这通常被认为是一件好事,并且允许不止两个对象进行协作(例如,事件的多个订阅者;相反,一个对象可以在两个源上订阅事件)


事件机制将有更多的开销,这在大多数情况下并不重要(提交表单时当然不重要),但在一小部分情况下可能会有更多开销(每秒发生数千次)。事件机制在阅读和调试方面也可能有点棘手。

我对javascript不太熟悉,但我不需要问:为什么更好?例如,可能有些东西对性能很好,但对代码可读性却很糟糕。只想补充一点,使用事件模型有助于代码重用和代码共享。当需要扩展时,您可以钩住事件并创建自定义侦听器,而使用普通函数调用则更为有限(但由于与事件模型相关联的开销,因此速度更快)。在某些情况下,与函数调用相比,使用事件模型的性能开销可以忽略不计。是的,调试可能是事件的一个问题。是否有一种方法可以描述事件,其中调试更容易。基于自定义事件的大应用程序如何保持一种方法,可以轻松检测哪些对象正在侦听事件。我想喜欢看到这两种方法的性能统计数据;如果有人有一个好的网站或参考资料,这将是非常有帮助的。事件对于插件来说是非常好的(参见示例)。不利的一面是竞争条件,很难完全控制事情的顺序,这也会导致复杂的调试。基于事件的体系结构:解耦
clickForm = function(){
     validateForm();
     formManager.submitForm(userData);
  }