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