検索アルゴリズム
importance: 5
このタスクには2つの部分があります。
次のオブジェクトを指定してください
let head = {
glasses: 1
};
let table = {
pen: 3
};
let bed = {
sheet: 1,
pillow: 2
};
let pockets = {
money: 2000
};
- すべてのオブジェクトプロパティが
pockets
→bed
→table
→head
のパスに従う方法で__proto__
を使用してプロトタイプを割り当てます。たとえば、pockets.pen
は3
(table
で見つかった)、bed.glasses
は1
(head
で見つかった)である必要があります。 pockets.glasses
かhead.glasses
のどちらで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
)が見つかった場所を記憶し、次回はその場所を検索します。また、変更があれば内部キャッシュを更新するほど賢いため、最適化は安全です。