callee是對象的一個屬性,該屬性是一個指針,指向參數(shù)arguments對象的函數(shù)
首先我們來寫個階成函數(shù):
從這個函數(shù)中可以看出來,用到了遞歸函數(shù),要是改變了函數(shù)名,里面的函數(shù)名也要隨著改變,這樣很不方便所以我們用callee來試試
我們來分析一下為什么這樣寫:根據(jù)callee的定義,可以看出來callee是arguments對象的一個屬性,指向arguments對象的函數(shù),這個函數(shù)就是chen(chen=arguments.callee),這樣解釋應(yīng)該可以理解了吧。
caller
caller是函數(shù)對象的一個屬性,該屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用(指向當(dāng)前函數(shù)的直接父函數(shù))
先來個例子吧
我們來解釋一下吧,首先函數(shù)b的屬性caller調(diào)用當(dāng)前函數(shù)b的函數(shù)引用a(就是指向當(dāng)前函數(shù)b的父函數(shù)a),所以結(jié)果就是彈出 function a(){ b();};
那么了解了caller和callee,那么可以不可以將二者結(jié)合在一起來使用呢
從這個代碼可以看出b函數(shù)中調(diào)用了b函數(shù)名,這樣當(dāng)函數(shù)名改變時就很不方便,我們需要替換里面的那個b
前面我們知道用什么方法可以指向當(dāng)前對象,下面我們就來修改一下:
從代碼中可以看出我們用arguments.callee代替了b函數(shù),所以解決了一下麻煩。。。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com