آشنایی با مضمون Global Object
در استاندارد ECMAScript شیئی به نام شئ سراسری یا Global Object وجود داراست. این شئ علاوه بر طراحی سایت در مشهد دارا بودن تعداد زیادی اسلوب و خاصیت، کل متغیرهای سراسری برنامه را نیز در بر میگیرد. یعنی هر متغیری که به صورت سراسری تعریف می شود، یک خاصیت از شئ سراسری خواهد بود. همچنین هر تابعی که به صورت سراسری تعریف میشود نیز، یک متد از شئ سراسری می باشد.
همان گونه که در فصل اولیه اشاره شد، پیادهسازیهای مختلفی از ECMAScript در دور و برهای گوناگون با نامهای مختلفahrefs به وجود آمده می باشد. مشهورترین این پیادهسازیها JavaScript است که در حوالی مرورگرها به شغل میرود. از گونه های دیگر پیادهسازیهای ECMAScript نیز میتوان به Node.js اشاره کرد که سوا فضا مرورگر و معمولاً در اطراف سرور انجام می شود.
شئ سراسری به صورت کلی گوشه و کنارهای اجرای ECMAScript از لحظهی استارت اپ، تا نقطه پایان نرم افزار وجود دارااست. اما نام این رایا پارس شئ و امکاناتی که در مشت نرم افزارنویس قرار میدهد، در فضاهای متفاوت، متفاوت هست. ولی برخی امکانات پایهای کلاً گوشه و کنارها در دسترس می باشند. ولی برخی امکانات دیگر با دقت به محیط جاری ساختن مختلف می باشند.
برای مثالً تابع parseInt و یا شئ console، هر دو متعلق به شئ سراسری هستند و در کل اطرافهای اجرای ECMAScript در دسترس میباشند.طراحی سایت در واقع تابع parseInt یک متد از شئ سراسری، و شئ console یک خاصیت از شئ سراسری هستند. تابع alert نیز یکیاز متدهای شئ سراسری است. اما تنها در حوالی مرورگر در دسترس میباشد. و در نزدیکیهایی مانند Node.js قابل به کارگیری نیست.
در گوشه و کنار Node.js نام شئ سراسری global است. اما در نزدیکی مرورگر شئ سراسری window نام دارد. یعنی کل متغیرها، ثابتها، توابع و اشیائی که در منطقهی سراسری تمجید می گردند، متعلق به شئ window میباشند. مثال زیر این موضوع را عالی نشان می دهد.
Copy
دراین مثال دو متغیر x و y به صورت سراسری تعریف و تمجید و مقداردهی شدهاند. همان گونه که مشاهده میکنید برای دسترسی به متغیر x میتوان از window.x استفاده نمود. همچنین برای دسترسی به شئ console میقدرت از window.console استفاده نمود. در واقع تمام اشیا و توابعی که به صورت سراسری در اپلیکیشنهای جاوا اسکریپت در دسترس میباشند، متعلق به شئ window میباشند.
نکته : متغیرهای سراسری که با کلمات کلید let یا const تمجید می شوند، به عنوان خاصیتهای شئ window در دسترس نخواهند بود.
قبلا نیز با تعداد زیادی از خاصیتها و متدهای شئ window آشنا شدهایم. مانند اشیا Math، RegExp یا Date که خاصیتهای شئ window میباشند و یا توابعی مانند alert، parseFloat یا parseInt که متدهای شئ window هستند. همچنین ثابتهایی مانند NaN و Infinity نیز خاصیتهایی از شئ window می باشند. البته معمولاً برای دسترسی بهاین موارد از نام شئ window قبل از نام آنها به کارگیری نمیکنیم. برای مثالً به جای نوشتن window.alert، فقط از نام alert استعمال میکنیم. ولی بایستی این نکته را همیشه به خیال و خاطر داشته باشید که در جاوا اسکریپت کل توابع، ثابتها و شی ها پیشساخته (Built-in)، متعلق به شئ window میباشند و همیشه میتوان از طریق این شئ به آنها دسترسی داشت.
همچنین لازم به ذکر است که به هرجاای از اپلیکیشن (حتی داخل توابع و بلاکها) میتوان خاصیتها و متدهای جدیدی را به شئ window اضافه کرد. برای مثالً در برنامهی زیر خاصیت x و اسلوب y به شئ window اضافه میگردند. بنابراین بههرجاای از برنامه میقدرت از x و y استفاده نمود، زیرا متعلق به شئ widnow هستند و منطقهی سراسری دارا هستند.
Copy
همچنین متغیرهایی که سوای به کار گیری از یکیاز کلمات کلیدی let یا const یا var تعریف و تمجید میگردند نیز متعلق به شئ window هستند و منطقهی سراسری داراهستند (حتی در صورتیکه درون توابع و بلاکها تعریفوتمجید شوند). مثلاً در نرم افزاری ذیل متغیر x فارغ از استعمال از این عبارات کلیدی و در حیطهی یک تابع تعریف گردیدهاست. ولی در خارج از تابع نیز میتوان به آن دسترسی داشت.
مضمون BOM
BOM یا Browser Object Model یک مدل انتزاعی برای برقراری ارتباط میان مرورگر و جاوا اسکریپت میباشد. در این مدل، مرورگر به عنوان یک شئ جاوا اسکریپت مدلسازی میشود که از طریق این شئ (همان شئ window) میقدرت به بسیاری از امکانات مرورگر دسترسی داشت.
مثلاً میتوان از دیالوگهای سیستمی (System Dialogs) برای نمایش پیام به استفاده کننده و یا پرسیدن سوال از کاربر بهره مند شد. و یا با به کار گیری از روال print میاقتدار پنجرهی چاپ را به استفاده کننده نمایش اعطا کرد. همچنین میتوان اطلاعاتی را درباره ی نوع مرورگر و یا نوع سیستم استدلال استفاده کننده به دست آورد و ... .
پس به عنوان گردآوریبندی میتوان این تمجید را دربارهی دو مضمون مدل BOM و شئ سراسری و رابطهی آنان با شئ window اظهار کرد.
در ECMAScript شیئی به نام شئ سراسری وجود دارااست که خاصیتها و متدهای اثر گذار زیادی دارد. مانند شئ Math و شئ Date که از خاصیتهای شئ سراسری هستند و همچنین توابع parseInt و parseFloat که از متدهای شئ سراسری می باشند. علاوه بر این مجموع توابع سراسری که به صورت Function Declaration تعریف می گردند و یا با کلمه و واژهی کلیدی var به صورت Function Expression تعریف می شوند متعلق به شئ سراسری (Global Object) میباشند. یعنی متدهای شئ سراسری می باشند. همچنین کل متغیرهایی که به صورت سراسری و با کلمه و واژهی کلیدی var تعریفوتمجید میشوند، خاصیتهایی از شئ سراسری خواهند بود. این شئ در جاوا اسکریپت با نام window شناخته میشود. ولی در سایر پیادهسازیهای ECMAScript می تواند نامهای دیگری داشته باشد.
شئ window خلال اجرا کردن نقش شئ سراسری در جاوا اسکریپت. به عنوان رابط فی مابین جاوا اسکریپت و مرورگر نیز کار میکند و از طریق این شئ میتوان به اکثری از امکانات مرورگر دسترسی داشت. این قسمت از امکانات شئ window در جاوا اسکریپت با عنوان BOM یا Browser Object Model شناخته می گردد.