以下の内容はhttps://tomcky.hatenadiary.jp/entry/2018/01/06/000658より取得しました。


instanceof演算子で親クラスと子クラスを比較判定する

developer.mozilla.org

JSの自作クラスの型判定に instanceof 演算子を使ったりするが、この演算子を用いて親クラスと子クラスを比較すると true を返す。

例えば、親クラスとしてFooクラスを、子クラスとしてFooクラスを継承したBarクラスを作成し、Fooクラスに同じクラス型かどうかを判定するequalsメソッドを実装してみる。

class Foo {
  equals(object) {
    console.log(object); // Bar {}
    console.log(object.constructor); // [Function: Bar]
    console.log(this.constructor); // [Function: Foo]

    // 右辺はBarオブジェクト、左辺はFooオブジェクト関数
    return object instanceof this.constructor;
  }
}

class Bar extends Foo {
}

console.log(new Foo().equals(new Bar())); // true

両者を区別したいなら、オブジェクト関数同士を === 演算子で比較する。

class Foo {
  equals(object) {
    ...
    return object.constructor === this.constructor;
    // return object instanceof this.constructor;
  }
}
...
console.log(new Foo().equals(new Bar())); // false



以上の内容はhttps://tomcky.hatenadiary.jp/entry/2018/01/06/000658より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14