我有一个小库,这里是我使用的函数的片段
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总是打印出我的数组的最后一个键和值 我怎样才能正确传递参数? 非常感谢,最诚挚的问候
答案 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));
});