برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP) یکی از پارادایمهای اصلی برنامهنویسی است که تمرکز آن بر روی اشیاء (Objects) است. در این پارادایم، اشیاء به عنوان ترکیبی از دادهها (Properties) و توابع (Methods) تعریف میشوند که با یکدیگر تعامل دارند. این رویکرد به توسعهدهندگان کمک میکند تا کدهای ساختارمند، قابل استفاده مجدد و قابل نگهداری بنویسند.
در جاوااسکریپت، کلاسها با استفاده از کلمه کلیدی class تعریف میشوند. کلاسها در واقع الگوهایی هستند که برای ایجاد اشیاء استفاده میشوند. هر کلاس میتواند شامل خصوصیات (Properties) و متدها (Methods) باشد.

کانستراکتور یک تابع خاص در کلاس است که هنگام ایجاد یک شیء جدید به طور خودکار فراخوانی میشود. این تابع برای مقداردهی اولیه به خصوصیات شیء استفاده میشود. در جاوااسکریپت، کانستراکتور با استفاده از کلمه کلیدی constructor تعریف میشود.
۱. ایجاد شیء جدید: با استفاده از کلمه کلیدی new، یک شیء جدید ایجاد میشود.
۲. اتصال this به شیء جدید: درون کانستراکتور، this به شیء جدید اشاره میکند.
۳. مقداردهی اولیه: با استفاده از this، مقادیر اولیه به شیء اختصاص داده میشوند.
۴. بازگشت خودکار شیء: کانستراکتور به طور خودکار شیء جدید را برمیگرداند (نیازی به return نیست).
کپسولهسازی به معنای مخفی کردن جزئیات داخلی یک شیء و ارائهی یک رابط کنترلشده برای دسترسی به دادهها است. در جاوااسکریپت، این کار با استفاده از نماد # برای تعریف خصوصیات و متدهای خصوصی (Private) انجام میشود.

ارثبری به کلاسها این امکان را میدهد تا ویژگیها و رفتارهای کلاسهای دیگر را به ارث ببرند. در جاوااسکریپت، این کار با استفاده از کلمه کلیدی extends انجام میشود.

چندشکلی به این معناست که یک متد میتواند رفتارهای مختلفی داشته باشد، بسته به این که روی کدام شیء فراخوانی شود. این ویژگی معمولاً از طریق ارثبری و بازنویسی متدها (Method Overriding) پیادهسازی میشود.

متدها و خصوصیات استاتیک متعلق به خود کلاس هستند و نه به نمونههای آن. این متدها و خصوصیات با استفاده از کلمه کلیدی static تعریف میشوند و بدون ایجاد نمونهای از کلاس قابل دسترسی هستند.

برنامهنویسی شیءگرا در جاوااسکریپت به توسعهدهندگان کمک میکند تا کدهای خود را به صورت ساختارمند، قابل استفاده مجدد و قابل نگهداری بنویسند. با استفاده از مفاهیمی مانند کلاسها، کانستراکتورها، کپسولهسازی، ارثبری، چندشکلی و متدهای استاتیک، میتوان برنامههای پیچیدهتری را با سهولت بیشتری توسعه داد. این مفاهیم پایهای OOP، جاوااسکریپت را به یک زبان قدرتمند و انعطافپذیر برای توسعهی نرمافزار تبدیل میکنند.