検索アルゴリズム
重要性: 5
このタスクは2つのパートを持っています。
オブジェクトがあります:
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
を取得するのにpocket.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
の中)がどこにあるのかを覚えていて、次回そこをすぐに探します。また、何か変更があった場合に内部キャッシュを更新するには十分賢いので、最適化は安全です。