LoginSignup
0
0

More than 1 year has passed since last update.

new演算子🍣

Last updated at Posted at 2021-07-03

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はなくなるのでご注意。

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