ホームページ  >  に質問  >  本文

javascript - またプロトタイプの問題ですか?

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

リーリー

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

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

リーリー

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

怪我咯怪我咯2684日前484

全員に返信(3)返信します

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:32:56

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

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

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

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

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

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

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

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

    返事
    0
  • キャンセル返事