GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

No menu could be recovered. Follow the blue links in the page.

This view

  • Original page
  • New address

GeezerVison is showing fa.javascript.info — الگوریتم جست و جو

  • آموزش
  • زبان جاوااسکریپت
  • پروتوتایپ‌ها، ارث‌بری
  • وراثت پروتوتایپی
بازگشت به درس

الگوریتم جست و جو

اهمیت: 5

این تمرین دو بخش دارد.

شیءهای زیر داده شده‌اند:

let head = {
  glasses: 1
};

let table = {
  pen: 3
};

let bed = {
  sheet: 1,
  pillow: 2
};

let pockets = {
  money: 2000
};
  1. از __proto__ برای مقداردهی پروتوتایپ‌ها استفاده کنید به طوری که جست و جوی هر ویژگی این مسیر را دنبال کند: pockets → bed → table → head. برای مثال، pockets.pen باید 3 باشد (در table پیدا شد) و bed.glasses باید 1 باشد (در head پیدا شد).
  2. این سوال را جواب دهید: دریافت glasses به صورت pockets.glasses سریع‌تر است یا head.glasses؟ اگر نیاز بود بنچمارک انجام دهید.
  1. بیایید __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
  2. در موتورهای مدرن، که از لحاظ عملکرد هوشمند هستند، تفاوتی بین اینکه ما ویژگی‌ای را از شیء یا پروتوتایپ آن دریافت کنیم وجود ندارد. آن‌ها جایی که ویژگی پیدا شد را به خاطر می‌سپارند و در درخواست بعدی از آن استفاده می‌کنند.

    برای مثال، برای pockets.glasses آن‌ها جایی که glasses را پیدا کردند (درون head) را به خاطر می‌سپارند و دفعه بعدی دقیقا همانجا را جست و جو می‌کند. همچنین آن‌ها به اندازه‌ای هوشمند هستند که اگر چیزی تغییر کند، کش‌های داخلی را بروزرسانی کنند تا بهینه‌سازی ایمن باشد.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.