الگوریتم جست و جو
اهمیت: 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
) را به خاطر میسپارند و دفعه بعدی دقیقا همانجا را جست و جو میکند. همچنین آنها به اندازهای هوشمند هستند که اگر چیزی تغییر کند، کشهای داخلی را بروزرسانی کنند تا بهینهسازی ایمن باشد.