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
};
- Brug
__proto__til at tildele prototyper på en måde, så enhver egenskabsopslag følger stien:pockets→bed→table→head. For eksempel,pockets.penskal være3(fundet itable), ogbed.glassesskal være1(fundet ihead). - Besvar spørgsmålet: er det hurtigere at få
glassessompockets.glassesellerhead.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
```
-
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.glasseshusker de hvor de fandtglasses(ihead), 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.