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

JavaScript コンストラクターは構築されたオブジェクト以外の値を返すことができますか?

DDD
DDDオリジナル
2024-11-10 21:43:02576ブラウズ

Can a JavaScript Constructor Return Values Other Than the Constructed Object?

コンストラクターの戻り値と [Instanceof] 演算子

JavaScript では、コンストラクター関数は構築されたオブジェクト以外の値を返すことができます。こうした状況を理解することは、instanceof 演算子からの予期せぬ結果などの実行時エラーを回避するために重要です。

ECMAScript 3rd Edition 仕様では、コンストラクターの動作を制御する [[Construct]] プロパティを定義しています。仕様によると:

  • ステップ 7: コンストラクター関数からの戻り値 (Result(6)) が Object 型でない場合は、Result(6) を返します。
  • ステップ 8: それ以外の場合は、新しく構築されたオブジェクトを返します(Result(1)).

したがって、コンストラクターは、instanceof 演算子が true を返さないようにするために、非プリミティブ値 (関数や配列など) を返すことができます。

例:

function Foo() {
  return [];
}

const foo = new Foo();
console.log(foo instanceof Foo);  // false

コンストラクターは配列 (非オブジェクト) を返すため、instanceof チェックは失敗します。逆に、プリミティブ値 (null や未定義など) を返しても true が返されます。

要約すると、コンストラクターによって返される値は、instanceof の結果に影響を与える可能性があります。 [[Construct]] プロパティで概説されている条件を理解することで、開発者は予期しない動作を防止し、クラスの継承チェックを正確に行うことができます。

以上がJavaScript コンストラクターは構築されたオブジェクト以外の値を返すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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