new演算子
コンストラクタ関数からインスタンスを作成するために使用する演算子。
◎コンストラクター関数の戻り値がオブジェクトの場合 return{ ... }
returnの返すオブジェクトを新しいインスタンスオブジェクトとして呼び出し元に返す。
◎コンストラクター関数の戻り値がオブジェクト以外の場合 or 戻り値のreturnが定義されていない場合
コンストラクターのprototypeを__proto__
にコピーし、コンストラクター関数内で使用されているthisを呼び出し元に返却することになる。
コンストラクター関数の戻り値がオブジェクトの場合.js
function F(a, b) {
this.a = a;
this.b = b;
return {}; //returnに{}からのオブジェクトを定義すると、出力結果は{}になってしまう。
}
const instance = new F(1,2);
console.log(instance) //出力結果は{}
コンストラクター関数の戻り値がオブジェクト以外の場合.js
function F(a, b) {
this.a = a;
this.b = b;
return a; //リターンの値がプリミティブ型(aとか1とか)
}
const instance = new F(1,2);
console.log(instance) //出力結果は{a:1, b:2}になる。
コンストラクター関数の戻り値returnが定義されていない場合.js
function F(a, b) {
this.a = a;
this.b = b;
}
const instance = new F(1,2);
console.log(instance) //出力結果は{a:1, b:2}になる。
prototypeがあった場合.js
function F(a, b) {
this.a = a;
this.b = b;
}
F.prototype.c = function () {}
const instance = new F(1,2);
console.log(instance) //出力結果で__proto__の中にcが格納されている状態になるになる。
↑ただ、return{};があると、出力結果の__proto__
の中のcはなくなるのでご注意。