Javascript 回调函数中的参数

Javascript 回调函数中的参数,javascript,jquery,loops,callback,arguments,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].pu

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

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];
};
这是我的行李

    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总是向我打印数组的最后一个键和值 如何正确传递参数? 非常感谢,向您致以最诚挚的问候应该会帮助您:

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