ホームページ > 記事 > ウェブフロントエンド > JavaScript関数のcaller属性とcallee属性の使用例を詳しく解説
caller 属性
は、関数への参照、つまり現在の関数を呼び出した関数本体を返します。
functionName.caller: functionName オブジェクトは、実行された関数の名前です。
注:
関数の場合、caller 属性は関数の実行時にのみ定義されます。 関数が JScript プログラムのトップレベルから呼び出された場合、 caller には null が含まれます。 caller 属性が文字列コンテキストで使用される場合、結果は functionName.toString と同じになります。つまり、関数の逆コンパイルされたテキストが表示されます。
Js コード:
function CallLevel(){ if (CallLevel.caller == null) alert("CallLevel was called from the top level."); else alert("CallLevel was called by another function:\n"+CallLevel.caller); } function funCaller(){ CallLevel(); } CallLevel(); funCaller()
callee 属性
指定された Function オブジェクトの本体である、実行中の Function オブジェクトを返します。
[function.]arguments.callee: オプションの関数パラメーターは、現在実行されている Function オブジェクトの名前です。
説明:
callee 属性の初期値は、実行される Function オブジェクトです。
callee 属性は、関数オブジェクト自体への参照を表す引数オブジェクトのメンバーです。これは、関数の再帰を隠したり、関数のカプセル化を保証したりするのに役立ちます。たとえば、次の例では、合計を再帰的に計算します。 1からnまでの自然数。そして、このプロパティ
は、関連する関数が実行されている場合にのみ使用できます。また、呼び出し先には長さ属性があり、検証にはこの方が適している場合があることにも注意してください。 argument.length は実パラメータの長さ、arguments.callee.length は仮パラメータの長さです。これにより、呼び出し時に仮パラメータの長さが実パラメータの長さと一致しているかどうかを判断できます。
Jsコード:
//callee可以打印其本身 function calleeDemo() { alert(arguments.callee); } //用于验证参数 function calleeLengthDemo(arg1, arg2) { if (arguments.length==arguments.callee.length) { window.alert("验证形参和实参长度正确!"); return; } else { alert("实参长度:" +arguments.length); alert("形参长度: " +arguments.callee.length); } } //递归计算 var sum = function(n){ if (n <= 0) return 1; else return n +arguments.callee(n - 1) }
以上がJavaScript関数のcaller属性とcallee属性の使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。