搜索算法
重要性: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中),下次就会直接在那里搜索。它们也足够聪明,可以在发生变化时更新内部缓存,以确保优化安全。