関数の呼び出しもと

関数の呼び出しもとを取得するのはarguments.callee.caller

正規表現は[]を使っても機能しなかった。
×  replaced=replaced.replace(/{[.\n]*}/, '');

var test3=function()では無名関数を変数に代入することになるので、変数名は取得できないらしい。



サンプル


コード

<script type="text/javascript">
function test1(){
	debug();
}

function test2(){
	debug();
}

var test3=function(){
	debug();
}

var test4=test1;

function debug(){
	var caller=arguments.callee.caller;

	var replaced=caller.toString();
	replaced=replaced.replace(/{(.|\n)*}/, '');

//	var reg=new RegExp('{(.|\n)*}','');
//	replaced=replaced.replace(reg, '');

	document.getElementById('output').innerHTML='<pre>caller:\n'+caller+'</pre>' +
	                                            '<pre>replaced:\n'+replaced+'</pre>';
}
</script>

<input type="button" value="test1" onclick="test1();">
<input type="button" value="test2" onclick="test2();">
<input type="button" value="test3" onclick="test3();">
<input type="button" value="test4" onclick="test4();">

<div id="output"></div>


BACK