retour au cours

Algorithme de recherche

importance: 5

La tâche comporte deux parties.

Étant donné les objets suivants :

let head = {
  glasses: 1
};

let table = {
  pen: 3
};

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

let pockets = {
  money: 2000
};
  1. Utilisez __proto__ pour attribuer des prototypes de manière à ce que toute recherche de propriété suive le chemin:pocketsbedtablehead. Par exemple, pocket.pen devrait être 3 (trouvé dans table), et bed.glasses devrait être 1 (trouvé dans head).
  2. Répondez à la question: est-il plus rapide d’obtenir glasses en tant que pockets.glasses ou head.glasses? Analyse si nécessaire.
  1. Ajoutons __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. Dans les moteurs modernes, en termes de performances, il n’ya pas de différence selon que l’on prend une propriété d’un objet ou de son prototype. Ils se souviennent du lieu où la propriété a été trouvée et le réutilisent à la demande suivante.

    Par exemple, pour pockets.glasses ils se souviennent où ils ont trouvé glasses (dans head), et la prochaine fois rechercheront là. Ils sont également assez intelligents pour mettre à jour les caches internes en cas de changement, de sorte que l’optimisation est sécurisée.