Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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_Design Patterns_Mediator - Fatal编程技术网

Javascript 在模块设计中使用构造$({})作为中介有哪些优点和缺点?

Javascript 在模块设计中使用构造$({})作为中介有哪些优点和缺点?,javascript,jquery,design-patterns,mediator,Javascript,Jquery,Design Patterns,Mediator,(当然,除了对jquery库的明显依赖之外。) 我的理由是:如果可以简化,就不要引入新的实体/代码。 例如: var app = {}; app.modules = {}; app.mediator = $({}); // response example app.mediator.on( 'some-event', function ( e, data ) { console.log( 'gotcha!', data ); }); // module example app.mod

(当然,除了对jquery库的明显依赖之外。) 我的理由是:如果可以简化,就不要引入新的实体/代码。
例如:

var app = {};
app.modules = {};
app.mediator = $({});

// response example
app.mediator.on( 'some-event', function ( e, data ) {
    console.log( 'gotcha!', data );
});

// module example
app.modules.module = ( function ( mediator ) {
    // event trigger example
    mediator.trigger( 'some-event', data );
})( app.mediator );

您实际上想要完成什么?假设:使用最少的代码将中介引入jquery项目您想要做什么,jquery自定义事件(没有新的中介对象)还不能做什么?jQuery自定义事件已经可以自己进行订阅、取消订阅和触发。我不想从任何页面html对象触发这些事件(原因:我可能会在将来删除它们?等等)。因此,这些都是定制事件,并且与我指定为中介的东西(以及拥有整个事件功能的东西——感谢jquery)相连接,使其成为一个显而易见的解决方案。