آشنایی با مضمون Global Object
در استاندارد ECMAScript شیئی به نام شئ سراسری یا Global Object وجود دارااست. این شئ علاوه بر دارا بودن تعداد زیادی روال و خاصیت، تمام متغیرهای سراسری برنامه را نیز در بر می گیرد. یعنی هر متغیری که به صورت سراسری تعریفوتمجید میشود، یک خاصیت از شئ سراسری خواهد بود. همچنین هر تابعی که به صورت سراسری تعریف میشود نیز، یک مشی از شئ سراسری می باشد.
همان گونه که در فصل اولیه اشاره شد، پیادهسازیهای مختلفی از ECMAScript در دور و برهای متفاوت با نامهای متفاوت به وجود آمده میباشد.طراحی سایت در مشهد مشهورترین این پیادهسازیها JavaScript می باشد که در حوالی مرورگرها به شغل میرود. از اشکال دیگر پیادهسازیهای ECMAScript نیز میاقتدار به Node.js اشاره کرد که سوا اطراف مرورگر و معمولاً در حوالی سرور انجام می شود.
شئ سراسری به صورت کلی دور و برهای اجرای ECMAScript از لحظهی استارت برنامه، تا نقطه پايان نرم افزار وجود داراست. اما نام این شئ و امکاناتی که در مشت نرم افزارنویس قرار میدهد، در نزدیکیهای متفاوت، گوناگون میباشد. ولی برخی امکانات شالودهای کلاً اطرافها در دسترس میباشند. اما برخی امکانات دیگر با دقت به محیط ایفا متعدد میباشند.
از جملهً تابع parseInt و یا شئ console، هر دو متعلق به شئ سراسری هستند و به صورت کلی دور و برهای اجرای ECMAScript در دسترس می باشند. طراحی سایت در واقع تابع parseInt یک اسلوب از شئ سراسری، و شئ console یک خاصیت از شئ سراسری می باشند. تابع alert نیز یک کدام از متدهای شئ سراسری است. اما فقط در حوالی مرورگر در دسترس میباشد. و در نزدیکیهایی مانند Node.js قابل استفاده نیست.
در اطراف Node.js نام شئ سراسری global هست. البته در حوالی مرورگر شئ سراسری window نام دارد. یعنی آحاد متغیرها، ثابتها، توابع و اشیائی که در منطقهیرایا پارس سراسری تعریفوتمجید می شوند، متعلق به شئ window می باشند. مثال زیر این گزینه را بهتر نشان میدهد.
Copy
دراین مثال دو متغیر x و y به صورت سراسری تمجید و مقداردهی شدهاند. همانطور که مشاهده میکنید برای دسترسی به متغیر x میتوان از window.x بهره برد.ahrefs همچنین برای دسترسی به شئ 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 شناخته میگردد.
آشنایی با مضمون Global Object
در استاندارد ECMAScript شیئی به نام شئ سراسری یا Global Object وجود دارااست. این شئ علاوه بر دارا بودن تعداد زیادی روال و خاصیت، تمام متغیرهای سراسری برنامه را نیز در بر می گیرد. یعنی هر متغیری که به صورت سراسری تعریفوتمجید میشود، یک خاصیت از شئ سراسری خواهد بود. همچنین هر تابعی که به صورت سراسری تعریف میشود نیز، یک مشی از شئ سراسری می باشد.
همان گونه که در فصل اولیه اشاره شد، پیادهسازیهای مختلفی از ECMAScript در دور و برهای متفاوت با نامهای متفاوت به وجود آمده میباشد.طراحی سایت در مشهد مشهورترین این پیادهسازیها JavaScript می باشد که در حوالی مرورگرها به شغل میرود. از اشکال دیگر پیادهسازیهای ECMAScript نیز میاقتدار به Node.js اشاره کرد که سوا اطراف مرورگر و معمولاً در حوالی سرور انجام می شود.
شئ سراسری به صورت کلی دور و برهای اجرای ECMAScript از لحظهی استارت برنامه، تا نقطه پايان نرم افزار وجود داراست. اما نام این شئ و امکاناتی که در مشت نرم افزارنویس قرار میدهد، در نزدیکیهای متفاوت، گوناگون میباشد. ولی برخی امکانات شالودهای کلاً اطرافها در دسترس میباشند. اما برخی امکانات دیگر با دقت به محیط ایفا متعدد میباشند.
از جملهً تابع parseInt و یا شئ console، هر دو متعلق به شئ سراسری هستند و به صورت کلی دور و برهای اجرای ECMAScript در دسترس می باشند. طراحی سایت در واقع تابع parseInt یک اسلوب از شئ سراسری، و شئ console یک خاصیت از شئ سراسری می باشند. تابع alert نیز یک کدام از متدهای شئ سراسری است. اما فقط در حوالی مرورگر در دسترس میباشد. و در نزدیکیهایی مانند Node.js قابل استفاده نیست.
در اطراف Node.js نام شئ سراسری global هست. البته در حوالی مرورگر شئ سراسری window نام دارد. یعنی آحاد متغیرها، ثابتها، توابع و اشیائی که در منطقهیرایا پارس سراسری تعریفوتمجید می شوند، متعلق به شئ window می باشند. مثال زیر این گزینه را بهتر نشان میدهد.
Copy
دراین مثال دو متغیر x و y به صورت سراسری تمجید و مقداردهی شدهاند. همانطور که مشاهده میکنید برای دسترسی به متغیر x میتوان از window.x بهره برد.ahrefs همچنین برای دسترسی به شئ 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 شناخته میگردد.