最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript中callee與caller的區(qū)別分析

 更新時(shí)間:2015年04月20日 09:29:59   投稿:hebedich  
有些小伙伴可能會(huì)問(wèn)caller,callee 是什么?在javascript 中有什么樣的作用?那么本篇會(huì)對(duì)于此做一些基本介紹。希望能夠?qū)Υ蠹依斫鈐avascript中的callee與caller有所幫助。

callee

callee是對(duì)象的一個(gè)屬性,該屬性是一個(gè)指針,指向參數(shù)arguments對(duì)象的函數(shù)
首先我們來(lái)寫(xiě)個(gè)階成函數(shù):

function chen(x){
if (x<=1) {
return 1;
} else{
return x*chen(x-1);
};
};

從這個(gè)函數(shù)中可以看出來(lái),用到了遞歸函數(shù),要是改變了函數(shù)名,里面的函數(shù)名也要隨著改變,這樣很不方便所以我們用callee來(lái)試試

function chen(x){
if (x<=1) {return 1;
}else{
return x*arguments.callee(x-1);
};
};

我們來(lái)分析一下為什么這樣寫(xiě):根據(jù)callee的定義,可以看出來(lái)callee是arguments對(duì)象的一個(gè)屬性,指向arguments對(duì)象的函數(shù),這個(gè)函數(shù)就是chen(chen=arguments.callee),這樣解釋?xiě)?yīng)該可以理解了吧。

caller

caller是函數(shù)對(duì)象的一個(gè)屬性,該屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用(指向當(dāng)前函數(shù)的直接父函數(shù))

先來(lái)個(gè)例子吧

function a(){
b();
};
function b(){
alert(b.caller);
};
a(); //結(jié)果就是彈出函數(shù)a和內(nèi)容

我們來(lái)解釋一下吧,首先函數(shù)b的屬性caller調(diào)用當(dāng)前函數(shù)b的函數(shù)引用a(就是指向當(dāng)前函數(shù)b的父函數(shù)a),所以結(jié)果就是彈出 function a(){ b();};

那么了解了caller和callee,那么可以不可以將二者結(jié)合在一起來(lái)使用呢

function b(){
alert(b.caller);
};

從這個(gè)代碼可以看出b函數(shù)中調(diào)用了b函數(shù)名,這樣當(dāng)函數(shù)名改變時(shí)就很不方便,我們需要替換里面的那個(gè)b
前面我們知道用什么方法可以指向當(dāng)前對(duì)象,下面我們就來(lái)修改一下:

(function a(){
b();
})();

function b(){
alert(arguments.callee.caller);
};

從代碼中可以看出我們用arguments.callee代替了b函數(shù),所以解決了一下麻煩。。。。。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

最新評(píng)論

泰兴市| 礼泉县| 大悟县| 泗水县| 镇康县| 古蔺县| 新疆| 贺州市| 德州市| 永济市| 中宁县| 房产| 潮安县| 临湘市| 洛南县| 南和县| 宜丰县| 额敏县| 长汀县| 安西县| 武隆县| 曲阳县| 莱州市| 招远市| 鹤峰县| 天柱县| 措勤县| 新乐市| 阳曲县| 家居| 宣化县| 彰化县| 广德县| 郎溪县| 吉林省| 侯马市| 昔阳县| 合水县| 桑植县| 丽水市| 铜鼓县|