プログラミングをしていると、「このデータは本当に私が期待しているものかな?」と不安になることはありませんか。特にJavaScriptは柔軟な言語なので、油断していると予期せぬ型が紛れ込むことがあります。そこで役立つのが
instanceof演算子
です。
instanceofで「家系図」を確認する
instanceofは、あるオブジェクトが特定のクラスのインスタンスであるかどうかを判定するためのツールです。例えば、「このデータは『自動車』クラスから作られたものか?」といった確認ができます。
具体的な事例を見てみましょう。
const myCar = new Car();
console.log(myCar instanceof Car); // 結果はtrue
これは「myCarはCarという設計図をもとに作られた実体(インスタンス)である」と証明しています。もしこれがfalseであれば、そのデータはCarではない何か、つまりエラーの原因になり得るということですね。
なぜtypeofではダメなのか?
初心者がよく使う typeof 演算子は、実は「数値」や「文字列」などの基本データ型を調べるのには向いていますが、クラスや配列を判別するのには力不足です。例えば、配列をtypeofで調べるとただの「object」としか返ってきません。
ここで instanceof を使うと、そのオブジェクトが「Array(配列)というクラスから派生したものか」まで見抜くことができます。まさに、データの正体を深掘りできる「鑑定士」のような存在なのです。
注意点:魔法ではないことを知る
ただし、instanceofには限界もあります。例えば、ブラウザのウィンドウをまたいだ場合や、異なるライブラリ間で生成されたオブジェクトについては、正しく判定できないことがあります。これは、JavaScriptの世界では「同じ名前のクラスでも、生成された場所が異なれば別物」と判断されるためです。
まとめ
instanceofは、プログラムの安全性を高めるための強力なチェックポイントです。複雑なプログラムを書くとき、「このデータは本当に〇〇の仲間か?」と疑うクセをつけることで、バグを未然に防ぐことができます。まずは簡単なクラスを作成して、console.logでその正体を確かめる実験から始めてみてください。