LoginSignup
2
2

More than 5 years have passed since last update.

ECMAScript2015(ES6)でクラスチェックする方法

Last updated at Posted at 2017-03-07

正しいサンプルコード(コメントより反映させて頂いた手法)

class Animal {
  constructor() {
    this.age = 0
  }
}

上記のようなES6のクラスがあったとして、コード上でクラスチェックする方法は以下となる。

function checkAnimal(animal) {
  if (!(animal instanceof Animal)) {
    console.log("これはAnimalではありません")
    return
  }
  console.log("これはAnimalです")
}

解説

instanceof 演算子を用いることで指定クラスのインスタンスであるかを得ることができる。

インスタンス instanceof クラス

誤りのサンプルコード(投稿初期時に公開していた手法)

この手法は同名のクラスである場合もtrueを返してしまうため使用厳禁

class Animal {
  constructor() {
    this.age = 0
  }
}

上記のようなES6のクラスがあったとして、コード上でクラスチェックする方法は以下となる。

function checkAnimal(animal) {
  if (animal.constructor.name != Animal.name) {
    console.log("これはAnimalではありません")
    return
  }
  console.log("これはAnimalです")
}

解説

クラス.name でクラス名を取得できる
インスタンス.constructor.name でインスタンスのクラス名を取得できる

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2