Sgealgoritme
vigtighed: 5
Opgaven har to dele.
Givet flgende 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 mde, s enhver egenskabsopslag flger stien:pocketsbedtablehead. For eksempel,pockets.penskal vre3(fundet itable), ogbed.glassesskal vre1(fundet ihead). - Besvar sprgsmlet: er det hurtigere at f
glassessompockets.glassesellerhead.glasses? Benchmark hvis ndvendigt.
1.Lad os tilfje __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 hastghedsmssig forskel p at tage en egenskab fra et objekt eller dens prototype. De husker hvor egenskaben blev fundet og genbruger den i nste foresprgsel.
For eksempel, for
pockets.glasseshusker de hvor de fandtglasses(ihead), og nste gang vil de sge der. De er ogs smarte nok til at opdatere interne caches hvis noget ndres, s denne optimering er sikker.