ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript コンストラクターが「this」以外のものを返すことができるのはどのような場合ですか?

JavaScript コンストラクターが「this」以外のものを返すことができるのはどのような場合ですか?

DDD
DDDオリジナル
2024-11-11 07:11:02617ブラウズ

When Can a JavaScript Constructor Return Something Other Than 'this'?

コンストラクターが 'this' 以外の値を返すインスタンス

JavaScript では、new キーワードを使用してコンストラクターが呼び出される場合、通常、次の値が返されます。新しく作成されたオブジェクト。ただし、特定の状況下では、これを返さないようにするために、別の値を返すことができます。

他の値を返すための条件

ECMA-262 第 3 版仕様で概説されているとおり[[Construct]] 内部プロパティ (ステップ 7)、コンストラクターの戻り値 (Result(6)) によって、これが返されるか、または返されるかが決まります。 ない。 Result(6) がオブジェクト型ではない場合、これの代わりにそれが返されます。この条件は、コンストラクターを正しく実行するために重要です。

次のコンストラクターを考えてみましょう。

function Foo() {
  return 10; // Returning a non-object primitive
}

var foo = new Foo();

この例では、 10 は非オブジェクト プリミティブであり、Foo() コンストラクターの結果として返されます。したがって、foo にはプリミティブ値 10 が割り当てられ、foo はプリミティブ型であるため、(new Foo()instanceof Foo) は false と評価されます。

概要

要約すると、コンストラクターは、コンストラクターの戻り値 (Result(6)) が次の場合にのみ、これ以外の値を返すことができます。オブジェクトタイプではありません。この条件により、非オブジェクト値を使用してオブジェクトを構築したり、他のコンストラクターに制御を渡したりすることができます。

以上がJavaScript コンストラクターが「this」以外のものを返すことができるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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