برنامه نویسی 168 بازدید

اشیا در جاوا اسکریپت مجموعه‌ای از جفت‌های کلید/مقدار هستند. این مقادیر می‌توانند شامل مشخصات و متدها باشند و همچنین ممکن است شامل انواع داده دیگر جاوا اسکریپت مانند رشته‌ها، اعداد و مقادیر بولی باشند. همه اشیا در جاوا اسکریپت از سازنده (Constructor) برای Object والد ساخته می‌شوند. این Object متدهای داخلی بسیار مفیدی دارد که می‌توانیم برای دسترسی به آن استفاده کنیم و اشیای دیگر مفیدی بسازیم. برخلاف متدهای پروتوتایپ آرایه مانند ()sort و ()reverse که در وهله‌های آرایه مورد استفاده قرار می‌گیرند، متدهای شیء به طور مستقیم روی سازنده شیء استفاده می‌شوند و از وهله شیء به عنوان یک پارامتر استفاده می‌شود. این روش به نام متد استاتیک خوانده می‌شود.

در این راهنما متدهای مهم داخلی شیء جاوا اسکریپت را بررسی می‌کنیم. در هر یک از بخش‌هایی که در ادامه ارائه شده یک متد خاص بررسی می‌شود و نمونه‌ای از کاربرد آن توضیح داده می‌شود.

پیش‌نیازها

برای این که بیشترین بهره را از این راهنما داشته باشید، می‌بایست با مراحل ایجاد، تغییر و کار کردن با شیءها آشنا باشید. به این منظور می‌توانید از این آموزش رایگان فرادرس کمک بگیرید.

برای این که به طور کلی اطلاعات بیشتری در مورد جاوا اسکریپت به دست آورید، می‌توانید از این آموزش استفاده کنید.

()Object.create

متد ()Object.create برای ایجاد یک شیء جدید و پیوند دادن آن به پروتوتایپ یک شیء موجود استفاده می‌شود. ما می‌توانیم یک وهله از شیء job را ایجاد کرده و آن را به شیء خاصی بسط دهیم:

خروجی

شیء barista اینک یک خصوصیت به نام «position» دارد؛ اما همه خصوصیات و متدهای دیگر مربوط به job هستند که از طریق پروتوتایپ در دسترس هستند. ()Object.create برای کدنویسی DRY از طریق کاهش کپی‌ها مفید است. کدنویسی DRY (اختصاری برای do not repeat yourself) مفهومی در زمینه توسعه نرم‌افزار است که هدف آن کاهش تکرار الگوهای کد، استفاده بیشتر از تجرید و اجتناب از افزونگی است.

()Object.keys

متد ()Object.keys یک آرایه ایجاد می‌کند که حاوی کلیدهای یک شیء است. ما می‌توانیم یک شیء را ایجاد کرده و آرایه‌های کلیدها را نمایش دهیم.

خروجی

متد Object.keys می‌تواند در یک حلقه قرار گیرد و کلیدها و مقادیر یک شیء را استخراج کند.

خروجی

Object.keys برای بررسی طول یک شیء نیز مفید است.

خروجی

ما با استفاده از خصوصیت length می‌توانیم 4 خصوصیت employees را بشماریم.

()Object.values

متد ()Object.values آرایه‌ای ایجاد می‌کند که حاوی مقادیری برای یک شیء است.

خروجی

متدهای ()Object.values و ()Object.values امکان بازگشت داده‌ها از اشیا را فراهم می‌سازند.

()Object.entries

متد ()Object.entries یک آرایه تودرتو از جفت‌های کلید/مقدار یک شیء ایجاد می‌کند.

خروجی

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

خروجی

متد ()Object.entries تنها خصوصیات خود وهله شیء را باز می‌گرداند و نه خصوصیاتی که ممکن است از پروتوتایپش به ارث برده باشد.

()Object.assign

متد ()Object.assign برای کپی کردن مقادیر از یک شیء به شیء دیگر استفاده می‌شود. ما می‌توانیم دو شیء ایجاد کرده و آن‌ها را با استفاده از متد ()Object.assign ادغام کنیم.

خروجی

همچنین این امکان وجود دارد که از عملگر اسپرد (…) برای اجرای این وظیفه استفاده کرد. در کد زیر ما روش اعلان character را از طریق ادغام شیءهای name و details تغییر داده‌ایم.

خروجی

ساختار اسپرد در ادبیات واژگان مربوط به اشیا به نام کلون کردن سطحی نیز نامیده می‌شود.

()Object.freeze

متد ()Object.freeze از تغییر یافتن خصوصیات و مقادیر یک شیء جلوگیری می‌کند و امکان افزودن یا حذف شدن خصوصیات از شیء سلب می‌شود.

خروجی

در مثال فوق تلاش کردیم تا رمز عبور hunter2 را با ****** جایگزین کنیم؛ اما خصوصیت password بدون تغییری باقی ماند. همچنین تلاش کردیم تا یک خصوصیات جدید به نام active اضافه کنیم که آن نیز اضافه نشد.

متد ()Object.isFrozen نیز برای بررسی این که یک شیء قفل شده است یا نه در دسترس است و پاسخ را به صورت یک مقدار بولی باز می‌گرداند.

()Object.seal

متد ()Object.seal از اضافه شدن خصوصیتی به شیء جلوگیری می‌کند،؛ اما امکان تغییر خصوصیات موجود را ارائه می‌کند. این متد مشابه ()Object.freeze است. پیش از پیاده‌سازی کد زیر، کنسول خود را رفرش کنید تا از بروز خطا جلوگیری شود.

خروجی

خصوصیت active جدید به شیء انتخابی افزوده نشده است؛ اما خصوصیت password با موفقیت تغییر یافته است.

()Object.getPrototypeOf

متد ()Object.getPrototypeOf برای دریافت خصوصیت [[Prototype]] که درون شیء به صورت داخلی پنهان شده است استفاده می‌شود. این خصوصیت از طریق خصوصیت __proto__ نیز در دسترس است.

در این مثال می‌توانیم یک آرایه ایجاد کنیم که به پروتوتایپ Array دسترسی داشته باشد.

خروجی

در خروجی فوق می‌بینیم که پروتوتایپ آرایه employees به pop، find و دیگر متدهای پروتوتایپ آرایه دسترسی دارد. می‌توانیم این مسئله را با تست کردن پروتوتایپ employees با Array.prototype تأیید کنیم.

خروجی

این متد برای دریافت اطلاعات بیشتر در مورد یک شیء یا تضمین این که به پروتوتایپ شیء دیگر دسترسی دارد مفید است.

یک متد دیگر نیز به نام ()Object.setPrototypeOf در این رابطه وجود دارد که یک پروتوتایپ به شیء دیگر اضافه می‌کند. توصیه شده است که از ()Object.create به جای این متد استفاده کنیم، زیرا سریع‌تر است و کارایی بیشتری دارد.

نتیجه‌گیری

اشیا متدهای مفیدی دارند که به ما کمک می‌کند تا آن‌ها را اصلاح کرده، محافظت کنیم یا حلقه‌ای روی آن‌ها تعریف کنیم. در این راهنما شیوه ایجاد و انتساب اشیای جدید، تعریف حلقه روی کلیدها و/یا مقادیر یک شیء را بررسی کردیم و یک شیء را فریز یا مهروموم کردیم.

اگر این نوشته مورد توجه شما واقع شده، پیشنهاد می‌کنیم موارد زیر را نیز بررسی کنید:

==

بر اساس رای 2 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *