回调函数中的参数

时间:2014-07-27 19:29:08

标签: javascript jquery loops callback arguments

我有一个小库,这里是我使用的函数的片段

HashManager.prototype.on = function(hash, callback) {

    if(hash[0] == '#') { hash = hash.substr(1); }

    if( typeof this.observers[hash] !== 'object' ) {
        this.observers[hash] = [];
    }

    this.observers[hash].push(callback);

    return this.observers[hash][this.observers[hash].length-1];
};

这是我的arr

    var ajaxURLS = {
    '#!o_kompanii': '/apages/about.html',
    '#!production': '/apages/production.html',
    '#!gde_kupit': '/apages/gde_kupit.html',
    '#!hozyaike_na_zametku': '/apages/hozyaike_na_zametku.html',
    '#!news': '/apages/news.html',
    '#!contacts': '/apages/contacts.html',
    '#!kurochka_po_zernyshku': '/apages/kurochka_po_zernyshku.html'

    };

这是我的循环

   var HM = new window.HashManager();
   $.each(ajaxURLS,function(hash, uri) {
        HM.on(hash, function(uri,hash) {
        console.log(uri);
        console.log(hash);
        });
  });

我的问题是console.log总是打印出我的数组的最后一个键和值 我怎样才能正确传递参数? 非常感谢,最诚挚的问候

1 个答案:

答案 0 :(得分:0)

Javascript closure 可以帮助您:

var HM = new window.HashManager();
   $.each(ajaxURLS, function(_hash, _uri) {
        HM.on(_hash, (function(uri,hash) {
            console.log(uri);
            console.log(hash);
        })(_hash, _uri));
  });