关于数组数据存放问题

var salesOffices = {};
salesOffices.clientList = [];

salesOffices.listen = function(key, fn) {
    if (!this.clientList[key]) {
            this.clientList[key] = [];
    }
//我想问下这个this.clientList[key].push(fn)的表现形式是什么,
//this.clientList[key]这是个数组然后往push,会成什么结果??
//是这样的吗["squareMeter100",fucntion(){},"squareMeter80",fucntion(){},]
    return this.clientList[key].push(fn);
}

salesOffices.listen("squareMeter100", function(price) {
    console.log("价格=" + price);
});
salesOffices.listen("squareMeter80", function(price) {
    console.log("价格=" + price);
});

salesOffices.trigger = function() {
    var key = Array.prototype.shift.call(arguments), fns =this.clientList[key];
if (!fns || fns.length === 0) {
    return false;
}
for (var i = 0, fn; fn = fns[i++]; ) {
    fn.apply(this, arguments);
    }
}

salesOffices.trigger("squareMeter100", 200);
salesOffices.trigger("squareMeter80", 100);
阅读 2.9k
2 个回答

this.clientList是:

{ 
    squareMeter100: [function (){}], 
    squareMeter80: [function (){}]
}

注意数组也是对象

新手上路,请多包涵

今天在看发布-订阅模式的时候也看到这个问题,不知道此问题有没有解决? console 控制台输出的 clientList 就是一个数组,但是 length = 0, 如果根据 length = 0 来说最外围是对象也不能说错,但是还是有点不太明吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题