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.