ホームページ > 記事 > ウェブフロントエンド > JavaScript でコンストラクターを介してメソッドを定義すると、関数のコピーが重複して作成されますか?
JavaScript でのプロトタイプとコンストラクターによるメソッド定義のパフォーマンスへの影響
JavaScript では、パブリック関数を使用して「クラス」を作成するための 2 つのアプローチが存在します。プロトタイプまたはコンストラクターを使用します。方法 1 はコンストラクターを通じてインスタンスに関数を割り当てますが、方法 2 はプロトタイプを利用してすべてのインスタンス間で関数を共有します。
方法 2 はより効率的であるとよく主張されますが、インスタンスからプライベート インスタンス変数を奪うことは大きな欠点です。 。しかし、メソッド 1 でインスタンスごとに重複した関数コピーが作成されるように見えるのは、実際に実際に起こっているのでしょうか?
JsPerf ベンチマークからの経験的証拠
JsPerf ベンチマークでは、メソッド 2 (プロトタイプ) が示唆されています。 ) 速度の点では確かにメソッド 1 (コンストラクター) よりも優れています。
実際的な意味
この違いはベンチマークでは明らかですが、実際のアプリケーションとの関連性には疑問があります。 。オブジェクトのインスタンス化の数が非常に多いシナリオ (フレームあたり 10,000 個など) であっても、このマイクロ最適化によってパフォーマンスのボトルネックが緩和される可能性は低いです。
推奨事項
最適化する場合パフォーマンスは非常に重要であるため、プロトタイプを介してメソッドを宣言することをお勧めします。それ以外の場合は、方法 1 の方が柔軟性が高く、一般的なオブジェクト指向プログラミング規則に従います。さらに、アンダースコア接頭辞で示されるプライベート プロパティ (例: _process()) を使用すると、カプセル化が強化され、直接の変更が防止されます。
以上がJavaScript でコンストラクターを介してメソッドを定義すると、関数のコピーが重複して作成されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。