javascript中函數(shù)作為參數(shù)調(diào)用的方法
本文實(shí)例講述了javascript中函數(shù)作為參數(shù)調(diào)用的方法。分享給大家供大家參考。具體分析如下:
先來看示例:
function Map(){
var obj = {};
this.put = function(key, value){
obj[key] = value;
}
this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}
}
var m = new Map();
m.put('01', 'abc');
m.put('02', 1024);
m.put('03', true);
m.put('04', 0);
m.put('05', false);
m.eachMap(function(key, value){
alert(key + " : " + value);
});
這段代碼執(zhí)行的順序是:從上往下順序解釋執(zhí)行,這是JS的規(guī)定。
這里主要說明一下m.eachMap()中函數(shù)做為參數(shù)是怎么傳遞并執(zhí)行的:
step1:執(zhí)行到m.eachMap這個(gè)方法的時(shí)候,JS會(huì)去找對(duì)應(yīng)的this.eachMap這個(gè)方法;
step2:找到this.eachMap這個(gè)方法,會(huì)根據(jù)函數(shù)體內(nèi)的語句順序執(zhí)行;
step3:當(dāng)執(zhí)行到fn(attr, obj[attr]);的時(shí)候,他會(huì)返回到for語句執(zhí)行;注意在返回for語句執(zhí)行之前,attr是沒有值的;從for語句返回之后,attr的值就有了,為‘01',而obj[attr]的值也有了,為‘a(chǎn)bc';
step4:接著,fn(attr, obj[attr]);會(huì)返回到m.eachMap這個(gè)方法的參數(shù)函數(shù)中,即
function(key, value){
alert(key + " : " + value);
}
attr替換key,obj[attr]替換value,并執(zhí)行alert語句,輸出。
step5:繼續(xù)執(zhí)行for循環(huán),重復(fù)執(zhí)行step4,并輸出,直到結(jié)束。
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
js 頁面?zhèn)鲄?shù)時(shí) 參數(shù)值含特殊字符的問題
解決方法就是利用js的escape函數(shù),這個(gè)函數(shù)在解決中文亂碼等方面應(yīng)用的比較廣泛。推薦使用。2009-12-12
js實(shí)現(xiàn)同一個(gè)頁面多個(gè)漸變效果的方法
這篇文章主要介紹了js實(shí)現(xiàn)同一個(gè)頁面多個(gè)漸變效果的方法,涉及javascript操作漸變效果的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
JavaScript設(shè)計(jì)模式之工廠模式簡單實(shí)例教程
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之工廠模式,結(jié)合完整實(shí)例形式分析了工廠模式的概念、原理及javascript定義與使用工廠模式的相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
利用js的Node遍歷找到repeater的一個(gè)字段實(shí)例介紹
本文教大家使用js的Node遍歷找到repeater的一個(gè)字段的具體實(shí)現(xiàn)思路,感興趣的朋友可參考下,希望可以幫助到你2013-04-04

