1。発信者
現在の関数を呼び出す関数への参照を返します。
functionname.caller
functionNameオブジェクトは、実行された関数の名前です。
説明します
関数の場合、発信者属性は、関数が実行されたときにのみ定義されます。関数がJavaScriptプログラムのトップレベルで呼び出された場合、発信者にはnullが含まれます。
次の例は、発信者属性の使用法を示しています。
コードコピーは次のとおりです。
関数callerdemo(){
if(arguments.caller){
var a = callerdemo.caller.toString();
アラート(a);
} それ以外 {
Alert( "これは最高の関数です");
}
}
function handlecaller(){
callerdemo();
}
handlecaller();
関数calleedemo(){
アラート(arguments.callee);
}
Calleedemo();
2。カリー
実行されている関数オブジェクト、つまり指定された関数オブジェクトの本体を返します。
[function。] arguments.callee
オプションの関数パラメーターは、現在実行している関数オブジェクトの名前です。
説明します
Calleeプロパティの初期値は、実行される関数オブジェクトです。
Calleeプロパティは、関数オブジェクト自体への参照を表すArgumentsオブジェクトのメンバーであり、匿名関数の再帰を助長したり、関数のカプセル化を確保したりします。たとえば、次の例では、自然数の合計の1からnからnまでの再帰計算。このプロパティは、関連する関数が実行されている場合にのみ使用できます。また、Calleeには長さの属性があることに注意することも重要です。これは、検証に適している場合があります。 arguments.lengthは実際のパラメーターの長さであり、arguments.callee.lengthは正式なパラメーターの長さです。これを使用して、正式なパラメーターの長さが呼び出し時に実際のパラメーターの長さと一致するかどうかを判断できます。
例
コードコピーは次のとおりです。
// Calleeはそれ自体を印刷できます
関数calleedemo(){
アラート(arguments.callee);
}
//パラメーターの検証に使用されます
関数calleelengthdemo(arg1、arg2){
if(arguments.length == arguments.callee.length){
window.alert( "正式なパラメーターと実際のパラメーターが正しいことを確認します!");
戻る;
} それ以外 {
アラート( "実際の引数長:" +arguments.length);
alert( "サイズ長:" +arguments.callee.length);
}
}
//再帰計算
var sum = function(n){
if(n <= 0)
返品1;
それ以外
notl necluments.callee(n -1)を返します
}
より一般的な再帰機能:
コードコピーは次のとおりです。
var sum = function(n){
if(1 == n)1を返します。
それ以外の場合は、n + sum(n-1)を返します。
呼び出された場合:アラート(sum(100));
この関数には、合計自体への参照が含まれています。関数名は変数名です。関数内の呼び出し合計は、呼び出しと同等です
グローバル変数はコール自体によく反映されることはできません。この時点では、Calleeを使用することがより良い方法になります。