تکنیک‌های اون‌تولید ECMAScript

عبارات ابراملی

اشیاء

ECMA-262 اشیاء (object) را به عنوان «جمعه‌ای از ویژگی‌های نام‌گذاری شده، هر کدام از آنها یک مقادیر ابتدایی، یک اشیاء یا یک تابع نگه می‌دارد» تعریف می‌کند. به طور دقیق، این به این معناست که اشیاء یک آرایه‌ای از مقادیر هستند که دارای ترتیب خاصی نیستند.

با اینکه ECMAScript اشیاء را به این شکل تعریف می‌کند، اما تعریف عمومی‌تر آن بر اساس نمادهای نام‌های کد (مردم، مکان‌ها یا چیزها) است.

کلاس

هر اشیایی توسط یک تعریف کلاس تعریف شده است، و می‌توان کلاس را به عنوان دستورالعمل‌های اشیاء (recipe for objects) در نظر گرفت. کلاس نه تنها باید رابط (interface) اشیاء را تعریف کند (ویژگی‌ها و روش‌هایی که توسعه‌دهندگان به آنها دسترسی دارند)، بلکه باید کارکرد داخلی اشیاء را نیز تعریف کند (کدهایی که باعث عملکرد ویژگی‌ها و روش‌ها می‌شوند). کامپایلرها و برنامه‌های تفسیری بر اساس توضیحات کلاس اشیاء می‌سازند.

نمونه

وقتی برنامه از کلاس برای ایجاد اشیاء استفاده می‌کند، اشیایی که ایجاد می‌شوند به عنوان نمونه‌های کلاس (instance) شناخته می‌شوند. تنها محدودیت تعداد اشیایی که از کلاس ایجاد می‌شوند از حافظه فیزیکی ماشین‌هایی است که کد را اجرا می‌کنند. هر نمونه رفتار مشابهی دارد، اما هر نمونه یک مجموعه داده‌های مستقل را پردازش می‌کند. فرآیند ایجاد نمونه‌های اشیاء از کلاس به عنوان استقرار (instantiation) شناخته می‌شود.

در فصل‌های قبلی ذکر کردیم که ECMAScript کلاس‌های رسمی ندارد. به جای آن، ECMA-262 تعریف اشیاء را به عنوان دستورالعمل‌های اشیاء (recipe for objects) در نظر می‌گیرد. این یک راه حل معقول از لحاظ منطقی است، زیرا تعریف اشیاء در واقع خود اشیاء است. حتی اگر کلاس‌ها واقعاً وجود نداشته باشند، ما تعریف اشیاء را به عنوان کلاس می‌نامیم، زیرا بیشتر توسعه‌دهندگان با این اصطلاح آشنا هستند و از لحاظ عملکرد، هر دو معادل هستند.

درخواست‌های زبان مبتنی بر اشیاء

یک زبان مبتنی بر اشیاء نیاز به ارائه چهار توانایی اساسی به توسعه‌دهندگان دارد:

  1. بسته‌بندی - توانایی ذخیره اطلاعات مرتبط (چه داده‌ها یا روش‌ها) در یک اشیاء
  2. کپی‌برداری - توانایی ذخیره یک اشیاء در یک اشیاء دیگر
  3. وراثت - توانایی دریافت ویژگی‌ها و روش‌ها از یک کلاس (یا چندین کلاس) دیگر
  4. پلوریفورم - توانایی نوشتن تابع یا روشهایی که می‌توانند به روش‌های مختلف اجرا شوند

ECMAScript این درخواست‌ها را پشتیبانی می‌کند، بنابراین می‌توان آن را به عنوان یک زبان مبتنی بر اشیاء در نظر گرفت.

تشکیل اشیاء

در ECMAScript، اشیاء از ویژگی‌ها (attribute) تشکیل شده‌اند، ویژگی‌ها می‌توانند مقادیر ابتدایی یا مقادیر ارجاعی باشند. اگر ویژگی‌ای که در آن قرار دارد یک تابع است، آن را به عنوان روش (method) اشیاء در نظر می‌گیرند، در غیر این صورت ویژگی به عنوان ویژگی (property) اشیاء در نظر گرفته می‌شود.