JavaScriptのinstanceof演算子の使い方を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptのinstanceof演算子の使い方について解説しています。instanceof演算子を使うと、オブジェクトの型を判定することができます。使い方と実行結果の見かたをサンプルコードで確認しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

JavaScriptのinstanceof演算子の使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプJavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

instanceof演算子の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

instanceof演算子とは

instanceof演算子とは、オブジェクトがプロトタイプにコンストラクタのprototypeプロパティを持っているかを確認する演算子です。

型チェックのできる演算子であり、クラス名やインスタンスを指定したうえで、そのオブジェクトが何で作られているかを確認する際に使用できます。

 

インスタンスとは

new演算子で作られたオブジェクトのことです。

関数を設計図とすると、new演算子で作られたオブジェクトは実体となります。

設計図と実体の関係をたとえるなら、車の設計図が関数で色や所有者が異なる実際の車が実体のオブジェクトとイメージしてみましょう。

 

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

instanceof演算子の使い方

下記のように実体のオブジェクトの後に半角スペースを開けて、instanceofと記述し、また半角スペースを開けて関数名とすることで実体が関数から作られているか確認可能です。

【実体】instanceof 【関数名】

実体が指定した関数から作られていればtrueが返り、そうでなければfalseが返ってきます。

 

実際に書いてみよう

実際にinstanceofを使って作られたものを確認して便利なケースにテストコードがあります。

テストコードとは、プログラムを書いた後に動作が意図したものか確認する作業を行うプログラムです。

プログラムが間違っているが動作してしまうケースをテストコードで間違いを見つける例をみていきましょう。

function Human(name){
  this.name = name;
  this.LEG = 2;
}

function Dog(name){
  this.name = name;
  this.LEG =4;
}

let yamada = new Dog('yamada');
console.log(yamada.name);

今回はinstanceofを使う例として、2つの関数を用意しました。

人間を現すHumanという関数と犬を現すDogという関数にしました。

それぞれ名前(name)と足の数(LEG)を持っており、ここで間違えて山田さん(yamada)を人間(Human)関数ではなく犬(Dog)関数でnewしています。

どちらの関数もnameというプロパティを持っているため、コンソールに名前を表示する処理は動作します。

そのため、今後、足の数を使った処理を書いたときにおかしな動作になることが予想されるでしょう。

そこで、下記のようなテストコードを使用しましょう。

if( !(yamada instanceof Human) ){
  console.log('Humanではありません。');
}

コンソールにHumanではありませんと表示され、間違いに気づくことができました。

データの数が増えて似たものがあったり、複数人でプログラムを書いているときに確認するコードが力を発揮します。

ぜひ試してみてください。

 

執筆してくれたメンター

横山茂雄(よこやましげお)

フリーエンジニアとして活動中。サーバーサイドからフロントまで時代の波に合わせてスキルを変化させてきました。

言語、フレームワーク、DB、現場、いずれも転々としながら、筋トレも欠かさない体育会系エンジニアです。TechAcademyジュニアのゲームアプリコースを担当しています。

 

大石ゆかり

JavaScriptのinstanceof演算子の使い方が良く分かったので良かったです!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaScript・jQueryを使ったWebサービス公開を習得できるオンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。