JavaScriptで呼び出し元の関数を特定する方法
JavaScriptで「ある関数がどこから呼び出されたのか」、つまり呼び出し元の関数を知りたい場合があります。そのようなときに使えるのが、Function.caller プロパティです。
なお、かつては arguments.caller プロパティも同様の目的で検討されていましたが、こちらは現在では廃止(非推奨)となっているため使用しないでください。
Function.caller の使い方
関数名.caller と記述することで、その関数を呼び出した関数を取得できます。トップレベル(グローバルスコープ)から直接呼び出された場合は null が返されます。
サンプルコード
以下は、ボタンをクリックすると Display() 関数が実行され、その呼び出し元をアラートで表示するシンプルな例です。
<html>
<head>
<script type="text/javascript">
function Display() {
alert("caller is " + Display.caller);
}
</script>
</head>
<body>
<p>次のボタンをクリックしてください:</p>
<form>
<input type = "button" onclick = "Display()" value="呼び出し元の関数を取得">
</form>
</body>
</html>注意点
Function.caller は標準仕様ではない(非標準の)機能である点に注意が必要です。特に以下の制限があります。
- strictモードでは使用不可: 厳格モード(
'use strict')のコード内でアクセスするとエラー(TypeError)が発生します。 - ブラウザ間の互換性: 主要ブラウザでは動作しますが、将来的に削除される可能性があるため、本番環境での利用は避けるのが無難です。
デバッグ用途などで呼び出し元を調査したい場合は、console.trace() や開発者ツールのスタックトレースを活用する方法もおすすめです。
-
Google ChromeでJavaScriptデバッガーを起動する方法
Google ChromeでJavaScriptのデバッガーを起動するには、以下のいずれかの方法を使用します。ショートカットキーで起動するキーボードの Ctrl + Shift + J を押すと、DevToolsのコンソールが開き、すぐにJavaScriptのデバッグを始められます。また、F12 キーを押すことでもデベロッパーツールを開くことができます。Chromeのメニューから起動するメニュー操作で起動したい場合は、以下の手順に従ってください。ブラウザ右上の「︙」(設定など)メニューをクリックします。「その他のツール」を選択します。「デベロッパーツール」をクリックします。さらに詳しく知りたい
-
JavaScriptで要素が非表示になっているかどうかを確認する方法
Webページの開発では、特定の要素が現在非表示になっているかどうか(display: none が適用されているか)を判定したい場面がよくあります。JavaScriptでこれを実現するには、window.getComputedStyle() メソッドを使うのが一般的です。このメソッドは、CSSスタイルシートで設定された実際の表示状態を取得できるため、確実に非表示状態をチェックできます。 実装例 以下は、ボタンをクリックすると非表示になっているDIV要素を表示するサンプルコードです。クリック時には、まず getComputedStyle() で要素が「none」になっているかどうかを確認してから