「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript でコンストラクターを介してメソッドを定義すると、関数のコピーが重複して作成されますか?

JavaScript でコンストラクターを介してメソッドを定義すると、関数のコピーが重複して作成されますか?

2024 年 11 月 14 日公開
ブラウズ:169

Does Defining Methods via Constructor in JavaScript Create Duplicate Function Copies?

JavaScript でのプロトタイプとコンストラクターによるメソッド定義のパフォーマンスへの影響

JavaScript では、パブリック関数を使用して「クラス」を作成するための 2 つのアプローチが存在します。プロトタイプまたはコンストラクターを使用します。方法 1 はコンストラクターを通じてインスタンスに関数を割り当てますが、方法 2 はプロトタイプを利用してすべてのインスタンス間で関数を共有します。

方法 2 はより効率的であるとよく主張されますが、インスタンスからプライベート インスタンス変数を奪うことは大きな欠点です。 。しかし、メソッド 1 でインスタンスごとに重複した関数のコピーが作成されるように見えることは、実際に実際に起こっているのでしょうか?

JsPerf ベンチマークの経験的証拠

JsPerf ベンチマークでは、メソッド 2 (プロトタイプ) が示唆されています。 ) 速度の点では確かにメソッド 1 (コンストラクター) よりも優れています。

実際的な意味

この違いはベンチマークでは明らかですが、実際のアプリケーションとの関連性には疑問があります。 。オブジェクトのインスタンス化の数が非常に多いシナリオ (フレームあたり 10,000 個など) であっても、このマイクロ最適化によってパフォーマンスのボトルネックが軽減される可能性は低いです。

推奨事項

最適化する場合パフォーマンスは非常に重要であるため、プロトタイプを介してメソッドを宣言することをお勧めします。それ以外の場合は、方法 1 の方が柔軟性が高く、一般的なオブジェクト指向プログラミング規則に従います。さらに、アンダースコア接頭辞で示されるプライベート プロパティ (例: _process()) を使用すると、カプセル化が強化され、直接の変更が妨げられます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3