ホームページ >ウェブフロントエンド >jsチュートリアル >コンストラクターは「this」以外の値を返すことができますか?

コンストラクターは「this」以外の値を返すことができますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-14 13:01:02631ブラウズ

Can Constructors Return Values Other Than

「this」参照をバイパスするコンストラクターの戻り値

new キーワードを使用してコンストラクターを呼び出す場合、デフォルトの動作はコンストラクターを使用して、新しく作成されたオブジェクト (「this」と呼ばれます) を返します。ただし、特定の状況では、コンストラクターが別の値を返し、新しく作成されたオブジェクトへの "this" の代入を事実上妨げる可能性があります。

ECMAScript 仕様によると、[[Construct]] のステップ 8内部プロパティは、戻り動作を次のように定義します:

コンストラクター関数 (Result(6)) によって返される値の型がオブジェクトではない場合:

- The value returned by the constructor will be returned instead of "`this`".

したがって、戻り値はコンストラクターからの "this" 以外の値:

  1. 非オブジェクト プリミティブ (文字列、数値、ブール値など) を返します: 戻り値がプリミティブの場合、オブジェクトとして解釈されないため、新しいオブジェクトは返されません。
  2. カスタム オブジェクト、または Object 以外の型の null 以外の値を返します:これは、Object.create() メソッドを使用するか、作成されたオブジェクトに別のプロトタイプを割り当てることによって実現できます。

例:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。