我觉得在fire函数内部可以对args进行判断,如果没有传参数,那么应该不显示undefined。 list.forEach(function(fn){ fn(args == void 0?" ":args); });
没必要吧,如果说接口设计本身就有问题,比如说你的订阅者强制需求两个参数,但是发布只有一个参数,出错也是难免的。 所以这里的订阅者对象一定是实现了相同接口的。