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