次のような 2 つの関数があるとします。
function a(){ this.x = 5; return {z:20};}
function b(){ this.x = 5; return 30;}
これらの行を実行すると、すべてが合理的に見えます。
a(); //output : {z:20}
b(); //output : 30;
しかし、それらをオブジェクト コンストラクターとして実行すると、次のようになります。
new a() //output : Object {z:20}
new b() //output : b {x:5}
new
コンストラクターが常にオブジェクトを返す必要があるかどうかわかりません。動作が異なるのはなぜですか? JavaScript は戻り値の型を監視しますか? 戻り値の型がオブジェクトの場合はそれを直接返し、そうでない場合は開始されたインスタンスを返しますか?
コンストラクターだと思うので、戻り値の型を常に無視して、開始されたオブジェクトを返す必要があります。この動作が JavaScript を複雑にしすぎていると思います。ここに私が得られない何かがありますか?