レッスンに戻る

検索アルゴリズム

importance: 5

このタスクには2つの部分があります。

次のオブジェクトを指定してください

let head = {
  glasses: 1
};

let table = {
  pen: 3
};

let bed = {
  sheet: 1,
  pillow: 2
};

let pockets = {
  money: 2000
};
  1. すべてのオブジェクトプロパティがpocketsbedtableheadのパスに従う方法で__proto__を使用してプロトタイプを割り当てます。たとえば、pockets.pen3(tableで見つかった)、bed.glasses1(headで見つかった)である必要があります。
  2. pockets.glasseshead.glassesのどちらでglassesを入手する方が早いですか?必要に応じてベンチマークを行ってください。
  1. __proto__を追加してみましょう

    let head = {
      glasses: 1
    };
    
    let table = {
      pen: 3,
      __proto__: head
    };
    
    let bed = {
      sheet: 1,
      pillow: 2,
      __proto__: table
    };
    
    let pockets = {
      money: 2000,
      __proto__: bed
    };
    
    alert( pockets.pen ); // 3
    alert( bed.glasses ); // 1
    alert( table.money ); // undefined
  2. 最新のエンジンでは、オブジェクトとそのプロトタイプからプロパティを取得するかどうかは、パフォーマンスの面では違いありません。プロパティが見つかった場所を思い出し、次のリクエストで再利用しています。

    例えば、pockets.glassesの場合、glasses(head)が見つかった場所を記憶し、次回はその場所を検索します。また、変更があれば内部キャッシュを更新するほど賢いため、最適化は安全です。