javascript中callee與caller的區別
callee
callee是對象的一個屬性,該屬性是一個指針,指向參數arguments對象的函數
首先我們來寫個階成函數:
function chen(x){if (x<=1) {return 1;} else{return x*chen(x-1);};};
從這個函數中可以看出來,用到了遞歸函數,要是改變了函數名,裏面的.函數名也要隨着改變,這樣很不方便所以我們用callee來試試
function chen(x){if (x<=1) {return 1;}else{return x*ee(x-1);};};
我們來分析一下為什麼這樣寫:根據callee的定義,可以看出來callee是arguments對象的一個屬性,指向arguments對象的函數,這個函數就是chen(chen=ee),這樣解釋應該可以理解了吧。
caller
caller是函數對象的一個屬性,該屬性保存着調用當前函數的函數的引用(指向當前函數的直接父函數)
先來個例子吧
function a(){b();};function b(){alert(er);};a(); //結果就是彈出函數a和內容
我們來解釋一下吧,首先函數b的屬性caller調用當前函數b的函數引用a(就是指向當前函數b的父函數a),所以結果就是彈出 function a(){ b();};
那麼瞭解了caller和callee,那麼可以不可以將二者結合在一起來使用呢
function b(){alert(er);};
從這個代碼可以看出b函數中調用了b函數名,這樣當函數名改變時就很不方便,我們需要替換裏面的那個b
前面我們知道用什麼方法可以指向當前對象,下面我們就來修改一下:
(function a(){b();})();function b(){alert(er);};
從代碼中可以看出我們用ee代替了b函數,所以解決了一下麻煩。。。。。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
-
css經典教程
css經典教程1有些習慣顯得尤為重要,今天與您分享六個CSS習慣。因為習慣其實是會變的,所以只能寫“最近”的。這些習慣都跟技術無關,如果不遵守,也不會出錯。但是我覺得良好的習慣會體現一個人的素質。我們在中向大家介紹過很多CSS經驗與技巧,這些東西都發布在/css/...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
JavaScript的課堂講解
本文主要內容:1.分析函數的四種調用形式2.弄清楚函數中this的意義3.明確構造函對象的過程4.學會使用上下文調用函數一、函數調用形式函數調用形式是最常見的形式,也是最好理解的形式。所謂函數形式就是一般聲明函數後直接調用即是。例如:複製代碼代碼如下://聲明...
相關文章
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別