正しいサンプルコード(コメントより反映させて頂いた手法)
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
でインスタンスのクラス名を取得できる