Algoritmo de búsqueda
importancia: 5
La tarea tiene dos partes.
Dados los siguientes objetos:
let head = {
glasses: 1
};
let table = {
pen: 3
};
let bed = {
sheet: 1,
pillow: 2
};
let pockets = {
money: 2000
};
- Use
__proto__
para asignar prototipos de manera que cualquier búsqueda de propiedades siga la ruta:pockets
→bed
→table
→head
. Por ejemplo,pockets.pen
debería ser3
(que se encuentra entable
), ybed.glasses
debería ser1
(que se encuentra enhead
). - Responda la pregunta: ¿es más rápido obtener
glasses
comopockets.glasses
ohead.glasses
? Referencie si es necesario.
-
Agreguemos
__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
-
En los motores modernos, no hay diferencia de rendimiento si tomamos una propiedad de un objeto o de su prototipo. Recuerdan dónde se encontró la propiedad y la reutilizan en la siguiente solicitud.
Por ejemplo, para
pockets.glasses
recuerdan dónde encontraronglasses
(enhead
), y la próxima vez buscarán allí. También son lo suficientemente inteligentes como para actualizar cachés internos si algo cambia, de modo que la optimización sea segura.