Алгоритм пошуку
важливість: 5
Задача має дві частини.
Ми маємо ось такі об’єкти:
let head = {
glasses: 1
};
let table = {
pen: 3
};
let bed = {
sheet: 1,
pillow: 2
};
let pockets = {
money: 2000
};
- Використайте властивість
__proto__
визначивши прототипи таким чином, щоб отримання властивостей було можливим по ось такому шляху:pockets
→bed
→table
→head
. Для прикладу,pockets.pen
повинно отримати значення3
(було знайдено вtable
), аbed.glasses
отримує значення1
(було знайдено вhead
). - Дайте відповідь: для отримання властивості
glasses
що буде швидше: визначити її такpockets.glasses
чи такhead.glasses
? При необхідності зробіть порівняльний тест.
-
Додаймо властивість
__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
-
Для сучасних рушіїв немає різниці, звідки ми беремо властивість – з самого об’єкта, чи його прототипу. Рушії запам’ятовують де розташована властивість і при повторному запиті одразу її використовують.
Наприклад, для
pockets.glasses
вони запам’ятають, що властивістьglasses
знаходиться в об’єктіhead
, і наступного разу шукатимуть її там. Вони також достатньо розумні для поновлення внутрішньої пам’яті, якщо вона була змінена, а тому подібна оптимізація є достатньо безпечною.