0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【javascript】instanceof

Posted at

instanceofとは?

どのコンストラクタから作成されたオブジェクトかを確認する。

使い方

case1

コンストラクタ関数 instance の Fを instanceofで評価するとtrue と評価され、
Fから作成されたインスタンスだということがわかる。

function F(a, b) {
    this.a = a;
    this.b = b;
}

F.prototype.c = function() {}

const instance = new F(1, 2);
console.log(instance instanceof F) >> true

case2

今度は、コンストラクタFの戻り値をオブジェクト形式でreturn するとfalseとなる。

function F(a, b) {
    this.a = a;
    this.b = b;
    return {a: 1}
}

F.prototype.c = function() {}

const instance = new F(1, 2);
console.log(instance instanceof F) >> false

違いは何か?

returnされたものは,function Fで作成されたオブジェクトではなく別のオブジェクトになる。すなわちfalse。

つまり、returnされたオブジェクトは以下のようなプロセスになっている。

function F(a, b) {
    this.a = a;
    this.b = b;
    const result = new Object();
    result.a = 1;
    return result;
}

作成したF関数はどのようになっているか?
これはFコンストラクタ内部でreturnされているのはresultなのでF===resultという形になっている。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?