Edit in JSFiddle

var qianduan7 = {};         // 定义发布者(前端公众号)
qianduan7.clientList = [];  // 缓存列表(小王和小李的回调函数)

// 添加订阅者
qianduan7.listen = function(fn) {
    this.clientList.push(fn);    // 订阅消息添加至缓存列表
}

// 发布消息, 依次通知订阅者
qianduan7.trigger = function() {
    var fns = this.clientList;                     // 取出该消息对应的回调函数集合
    for(var i = 0; i< fns.length; i++) {
         fns[i].apply(this, arguments);            // arguments是发布消息时附送的参数
    }
}

// 小王订阅的消息
qianduan7.listen(function(type) {
    console.log(`小王订阅的${type}文章`);
});

// 小李订阅的消息
qianduan7.listen(function(type) {
    console.log(`小李订阅的${type}文章`);
});

// 公众号发布消息
qianduan7.trigger('nodejs');
qianduan7.trigger('js');
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="博客 - 发布订阅模式1">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>

</body>
</html>