Chapter 1. Prototype

2055 ワード

Prototypeとは?

  • Prototypeの定義


    Prototype=プロトタイプオブジェクト.
    JSはPrototype Based Languageであり、Prototypeベースの言語である.
  • Prototypeを使用する理由

  • ジェネレータ内でメソッドを作成すると、生産性が低下し、メモリが大量に消費されます.
  • 個人的には、
  • オブジェクトは、共通に使用される属性を作成するために使用されると考えられます.
  • 大まかな例

  • Prototype vs(下線2回)proto(下線2回)


  • 関数とは?

    function Truck() {}
  • JSでは、関数はオブジェクトです.
  • function Truck(){} === let Truck = new Function()
  • オブジェクトであるため、関数はPROPERTYを有することができる.

  • PrototypeとProtoはどのように接続されていますか?

  • 関数を作成するときに作成されます。

  • Truck関数を生成すると、図に示すように、その関数に対応するTruckという名前のオブジェクトが作成されます.
  • Truckプロトタイプというオブジェクトが作成されます.
  • が生成されると、Truckというオブジェクトはプロトタイプの属性を生成し、Truck's Prototypeというオブジェクトはコンストラクション関数の属性を生成する.
  • Truckオブジェクト内のプロトタイプpropertyはTruckのプロトタイプオブジェクトを指し、Truckのプロトタイプオブジェクト内のコンストラクタpropertyはTruckオブジェクトを指す.
  • だから、Truck.プロトタイプはTruck'sプロトタイプを参照します.
    Truck.prototype.drive = function(){}
  • Truck'sプロトタイプオブジェクト内でdriveプロパティをチェックし、ない場合は上記のように生成します.

  • let oldTruck = new Truck('Lee', 'orange', 20)
  • newオペレータによってoldTruckとして知られるインスタンスオブジェクトが生成される.
  • Truckというコンストラクタを実行し、その値を設定します.その結果、属性値が生成され、protoが生成されます.
  • protoは、そのオブジェクトのプロトタイプです.
  • newTruckオブジェクトもoldTruckオブジェクトと同じです.

  • 例えば、
  • 、oldTruck.ドライブ()の値を知りたいです.
  • 最初の面として、oldTruckオブジェクトは自身の中でdrive propertyを探します.ただし、上図のようにdriveメソッドはありません.
  • の場合、proto propertyはTruck'sプロトタイプオブジェクトを指し、driveメソッドを探します.