GeezerVison is showing uk.javascript.info — Алгоритм пошуку
назад до урокуАлгоритм пошуку
важливість: 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, і наступного разу шукатимуть її там. Вони також достатньо розумні для поновлення внутрішньої пам’яті, якщо вона була змінена, а тому подібна оптимізація є достатньо безпечною.