javascript - またプロトタイプの問題ですか?
怪我咯
怪我咯 2017-05-19 10:30:56
0
3
562

次の 2 つの書き方の本質的な違いがわかりません。

リーリー

上記の記述方法では、プロトタイプを使用して、インスタンス化されたオブジェクトが親クラスの関数を呼び出せるようにしています。

次のメソッドはプロトタイプを渡しませんが、使用方法はまったく同じです。

リーリー

この 2 つはどのような点で比較できますか?アドバイスをお願いします、ありがとうございます!

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
过去多啦不再A梦

メモリの節約に違いがあります

  • 最初の方法であるプロトタイプ定義では、すべての子孫がメソッド定義を共有します。このメソッド定義は、作成したインスタンスの数に関係なく、メモリ内の 1 つの領域のみを占有し、すべてのインスタンスの age メソッドはこのメモリ アドレスを指します。

  • 2 番目のメソッドはコンストラクターで定義され、インスタンスが作成されるたびに、age メソッドの定義によってインスタンスに排他的なスペースが割り当てられます。より多くのインスタンスが作成されると、メモリも比例して増加します。

まとめると、よくある方法であればプロトタイプに入れてください。

いいねを押す +0
習慣沉默

2 番目の記述方法はコンストラクター パターンで、使いやすいですが、このメソッドの主な問題は、各メソッドをインスタンスごとに再作成する必要があることです。
最初のプロトタイプ パターンのアプローチでは、すべてのオブジェクト インスタンスがそれに含まれるプロパティとメソッドを共有できるようにすることで、この問題を解決します。

いいねを押す +0
習慣沉默

簡単に言えば、ほとんどの場合、メソッドがプロトタイプに記述され、プロパティがコンストラクターに記述されることを除いて、関数は同じです。そのため、最初のメソッドがより一般的に使用されます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート