کاربرد شی‌های ECMAScript

ایجاد و از بین رفتن موجودیت‌ها در فرآیند اجرای JavaScript رخ می‌دهد، درک مفهوم این قالب برای درک کل زبان بسیار مهم است.

تعریف و نمونه‌سازی

روش ایجاد موجودیت با استفاده از کلمه کلیدی new و نام نوع مورد نیاز برای نمونه‌سازی است:

var oObject = new Object();
var oStringObject = new String();

کد اول یک نمونه از نوع Object ایجاد می‌کند و آن را در متغیر oObject ذخیره می‌کند. کد دوم یک نمونه از نوع String ایجاد می‌کند و آن را در متغیر oStringObject ذخیره می‌کند. اگر سازنده هیچ پارامتری ندارد، گوشه‌ها لازم نیست. بنابراین می‌توان کد بالا را به صورت زیر بازنویسی کرد:

var oObject = new Object;
var oStringObject = new String;

مرجع موجودیت

در فصل‌های قبلی، مامفهوم نوع مرجعدر ECMAScript، نمی‌توان به نمودار فیزیکی یک موجودیت دسترسی داشت، بلکه تنها می‌توان به مرجع موجودیت دسترسی داشت. هر بار که یک موجودیت ایجاد می‌شود، چیزی که در متغیر ذخیره می‌شود مرجع موجودیت است، نه موجودیت خود.

از بین رفتن موجودیت

ECMAScript دارای یک برنامه جمع‌آوری زباله (garbage collection routine) است که به این معناست که نیازی به از بین بردن خاصیت‌های موجود برای آزاد کردن حافظه نیست. هنگامی که هیچ مرجعی برای یک موجودیت وجود ندارد، موجودیت به عنوان از بین رفته (dereference) شناخته می‌شود. هنگام اجرای برنامه جمع‌آوری زباله، تمام موجودیت‌های از بین رفته از بین می‌روند. هر بار که یک تابع کد خود را اجرا می‌کند، برنامه جمع‌آوری زباله اجرا می‌شود و تمام متغیرهای محلی را آزاد می‌کند، و همچنین در برخی شرایط غیرقابل پیش‌بینی دیگر، برنامه جمع‌آوری زباله نیز اجرا می‌شود.

تنظیم همه ارجاعات به یک شیء به null، می‌تواند به طور اجباری شیء را حذف کند. به عنوان مثال:

var oObject = new Object;
// در اینجا با شیء کاری انجام دهید
oObject = null;

وقتی که متغیر oObject به null تنظیم شود، ارجاع به اولین شیء ایجاد شده وجود ندارد. این به این معناست که در下次 اجرای برنامه، جمع‌آوری کسری حافظه، این شیء از بین خواهد رفت.

بهتر است پس از استفاده از یک شیء، آن را حذف کنید تا از حافظه آزاد شود، این یک عادت خوب است. این همچنین اطمینان می‌دهد که شیء‌هایی که دیگر قابل دسترسی نیستند، استفاده نمی‌شوند و از خطاهای طراحی برنامه جلوگیری می‌شود. علاوه بر این، مرورگرهای قدیمی (مانند IE/MAC) برنامه‌های جمع‌آوری کسری حافظه کامل ندارند، بنابراین در هنگام خروج از صفحه، شیء ممکن است به درستی از بین نرود. حذف شیء و همه ویژگی‌های آن بهترین روش برای اطمینان از استفاده صحیح از حافظه است.

توجه:در هنگام حذف همه ارجاعات به یک شیء باید دقت کرد. اگر یک شیء دو یا چند ارجاع داشته باشد، برای حذف صحیح آن باید همه ارجاعات آن به null تنظیم شوند.

پیوندهای زودرس و دیررس

پیوندها (binding) به روش‌هایی اطلاق می‌شود که با آن‌ها می‌توان رابط شیء را با نمونه شیء پیوند داد.

پیوندهای زودرس (early binding) به معنای این است که قبل از نمونه‌سازی شیء، ویژگی‌ها و روش‌های آن تعریف می‌شوند، بنابراین کامپایلر یا برنامه‌های تفسیری می‌توانند کد ماشینی را از پیش تبدیل کنند. در زبان‌هایی مانند Java و Visual Basic، با پیوندهای زودرس، می‌توان از IntelliSense (یعنی ویژگی‌هایی که به توسعه‌دهندگان لیست ویژگی‌ها و روش‌های شیء را ارائه می‌دهد) در محیط توسعه استفاده کرد. ECMAScript یک زبان نوع ضعیف است و پیوندهای زودرس را پشتیبانی نمی‌کند.

از سوی دیگر، پیوندهای دیررس (late binding) به معنای این است که کامپایلر یا برنامه‌های تفسیری در قبل از اجرا، نوع شیء را نمی‌دانند. با استفاده از پیوندهای دیررس، نیاز به بررسی نوع شیء نیست و فقط باید بررسی شود که آیا شیء پشتیبانی از ویژگی‌ها و روش‌ها را دارد یا خیر. تمام متغیرهای ECMAScript از روش پیوندهای دیررس استفاده می‌کنند. این به این معناست که می‌توان تعداد زیادی عملیات شیء را بدون هیچ مجازاتی اجرا کرد.