「this」参照をバイパスするコンストラクターの戻り値
new キーワードを使用してコンストラクターを呼び出す場合、デフォルトの動作はコンストラクターを使用して、新しく作成されたオブジェクト (「this」と呼ばれます) を返します。ただし、特定の状況では、コンストラクターが別の値を返し、新しく作成されたオブジェクトへの "this" の代入を事実上妨げる可能性があります。
ECMAScript 仕様によると、[[Construct]] のステップ 8内部プロパティは、戻り動作を次のように定義します:
コンストラクター関数 (Result(6)) によって返される値の型がオブジェクトではない場合:
- The value returned by the constructor will be returned instead of "`this`".
したがって、戻り値はコンストラクターからの "this" 以外の値:
例:
function Foo() { return { name: "sample" }; } var foo = new Foo(); console.log(foo instanceof Foo); // false
この場合、Fooコンストラクターは Foo コンストラクターのインスタンスではないオブジェクトを返します。(new Foo() instanceof Foo) は false と評価されます。
以上がコンストラクターは「this」以外の値を返すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。