tilbage til lektionen

Søgealgoritme

vigtighed: 5

Opgaven har to dele.

Givet følgende objekter:

let head = {
  glasses: 1
};

let table = {
  pen: 3
};

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

let pockets = {
  money: 2000
};
  1. Brug __proto__ til at tildele prototyper på en måde, så enhver egenskabsopslag følger stien: pocketsbedtablehead. For eksempel, pockets.pen skal være 3 (fundet i table), og bed.glasses skal være 1 (fundet i head).
  2. Besvar spørgsmålet: er det hurtigere at få glasses som pockets.glasses eller head.glasses? Benchmark hvis nødvendigt.

1.Lad os tilføje __proto__:

```js run
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
```
  1. I moderne motorer er der ingen hastghedsmæssig forskel på at tage en egenskab fra et objekt eller dens prototype. De husker hvor egenskaben blev fundet og genbruger den i næste forespørgsel.

    For eksempel, for pockets.glasses husker de hvor de fandt glasses (i head), og næste gang vil de søge der. De er også smarte nok til at opdatere interne caches hvis noget ændres, så denne optimering er sikker.