JavaScriptにおいて、コンストラクタ関数(constructor function)でreturn文を使うことにはいくつかの注意点がある。
(1)returnでオブジェクトを返す場合: もしコンストラクタ関数でreturn文を使ってオブジェクトを返す場合、そのオブジェクトがインスタンスとして返される。この場合、コンストラクタ関数の中で明示的に返すオブジェクトがインスタンスとなる。
function Parent() {
this.parentProperty = 'I am a parent';
return { customProperty: 'Custom value' };
}
var a = new Parent();
console.log(a); // { customProperty: 'Custom value' }
(2)returnでプリミティブ値を返す場合: もしコンストラクタ関数でreturn文を使ってプリミティブな値(数値、文字列、真偽値など)を返す場合、return文は無視され、インスタンス自体が返される。
function Parent() {
this.parentProperty = 'I am a parent';
return 'Custom value';
}
var a = new Parent();
console.log(a); // Parent { parentProperty: 'I am a parent' }
(3)returnなしの場合: コンストラクタ関数でreturn文がない場合、暗黙的にインスタンスが返される。
function Parent() {
this.parentProperty = 'I am a parent';
}
var a = new Parent();
console.log(a); // Parent { parentProperty: 'I am a parent' }
一般的な使い方として、コンストラクタ関数内でreturn文を使うことは、特に特定の目的がない限り避けられる傾向がある。通常は、returnを使わずにインスタンスを生成し、インスタンスに対してプロパティやメソッドを追加する方法が一般的である。