ECMAスクリプトは、かなりの間、Function.prototype.caller
プロパティに対応しています。たとえそのES5で厳格に廃止されたとしても、IEはそれをサポートしなければなりません。だから、基本的には関与している機能をループすることができます。出力されます
function one() {
two();
}
function two() {
three();
}
function three() {
var caller = three.caller;
console.log('caller was: ', caller.name);
while(caller = caller.caller) {
console.log('caller was: ', caller.name);
}
}
(function outer() {
one();
}());
:あなたが知っているのであれば
caller was: two
caller was: one
caller was: _outer
、エラーを機能させるには、あなたが答えに、このメソッドが最初に呼び出されたかをすべての方法までを取得し、そのように起こります。深さのちょうど後になっている場合は、caller.caller
プロパティを超えた回数をカウントすることができます。少なくともIE8は "デバッガ"ステートメントをサポートする必要があります。このステートメントは、そのスクリプトで呼び出して、デバッガをステージ上に持ってくることができます。
ブラウザ自体がスタックオーバーフローエラーをスローするまで、ある関数に別の関数を伝え、グローバル変数をインクリメントすることができます。次に、カウンター変数を印刷すると、スタックの深さの粗値が得られます。 – Bojangles