D1-kifpool

جاوا اسکریپت به زبان ساده: جلسه سیزدهم - آبجکت‌ (بخش دوم - پیشرفته)

یک‌شنبه 15 بهمن 1396 - 15:30
مطالعه 4 دقیقه
در جلسه قبلی، به مرور آبجکت‌ها پرداختیم. در این جلسه قصد داریم این موضوع را زیر ذره‌بین ببریم و با امکانات‌ بیشتری از جمله متدها و قابلیت‌های دیگر آبجکت‌ آشنا شویم.
تبلیغات
D4-mcid4

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

کپی لینک

متدهای آبجکت:

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

متدها نیز فانکشن‌ها (یا اکشن‌هایی) هستند که در داخل آبجکت ذخیره شده‌اند. این فانکشن‌ها به آیتم‌های دیگر آبجکت دسترسی دارند. مثلا فرض کنید یک آبجکت داریم که دو ویژگی نام و نام خانوادگی دارد. حالا ما به یک متد نیاز داریم که بتواند نام و نام خانوادگی را جمع کند و نام کامل را به ما خروجی بدهد. این کار با کمک یک فانکشن که دو آیتم اول آبجکت را جمع کند انجام می‌شود. پس این فانکشن را به‌عنوان یک آیتم جدید در آبجکت ذخیره می‌کنیم.

 استفاده از متد همانند دیگر ویژگی‌های فانکشن تنها با نوشتن نام آن متد انجام می‌شود. منتها چون اینجا با یک فانکشن سر و کار داریم، ضروری است تا علامت () را در انتهای نام فانکشن قرار دهیم. مانند:‌

()objectName.methodName

حالا که با متدها آشنا شده‌اید، بیایید همان پروژه مدیریت رستوران را که در جلسات قبلی دیده بودیم، اندکی بیشتر تکمیل کنیم. در جلسه قبل یاد گرفته‌ایم که دیگر نیازی نیست متغیر نام پیتزا و قیمت آن را در متغیر‌های جداگانه ذخیره کنیم و می‌توانیم تمامی اطلاعات آن‌ها را در قالب تنها یک متغیر ذخیره کنیم. همچنین یاد گرفته‌ایم که می‌توانیم فاکتور نهایی را نیز در قالب یک آبجکت ذخیره کنیم. پس برای تمرین این کار را با هم انجام می‌دهیم.

ابتدا یک آبجکت به‌عنوان پیتزای مخصوص می‌سازیم:

var pizzaObject = {

name: “specialPizza”,

price : 1000,

off: 100

}

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

ابتدا متغیر محمد حسین را تعریف می‌کنیم:

var customerName = “mohammad hossein”

var factor = {

user: customerName,

orderNumber : 123,

deliveryType: “free”,

pizzaName = pizzaObject.name,

priceWithOutOff = pizzaObject.price,

offPrice = pizzaObject.offPrice,

calculateFinalPrice = function() {

   return this.priceWithOutOff - this.offPrice 

}

}

همانطور که مشاهده کردید، ما در آبجکت فعلی factor، یک متد اضافه کرده‌ایم. کار متد calculateFinalPrice این است که دو مقدار از آبجکت factor را از هم کم می‌کند. کلمه this در داخل متدهای آبجکت، اشاره به همان آبجکت دارد. یعنی وقتی کلمه this را در داخل فانکشن یا متد calculateFinalPrice به کار برده‌ایم مانند این است که آبجکت factor را صدا کرده باشیم.

حالا اگر مقدار نهایی فاکتور را در یک متغیر به نام finalPrice بریزیم و این متغیر را در کنسول چاپ کنیم، قیمت نهایی پیتزا را دریافت خواهید کرد:

var finalPrice = factor.calculateFinalPrice()

console.log(finalPrice)

همچنین می‌توانید متدهای جدید را بعد از تعریف یک آبجکت بدان اضافه کنید. این کار مشابه اضافه کردن آیتم‌ها و ویژگی‌های جدید به آبجکت در جلسه قبل است.کافی است نام متد را بنویسید و به‌عنوان مقدار آن، کاری را که باید انجام بدهد در قالب یک فانکشن بنویسید. برای مثال ما یک آبجکت با نام user داریم. این آبجکت دارای نام و نام خانوادگی است.

var user = {

name: "mohammad Hossein",

family: "malek"

}

حالا می‌خواهیم یک متد بدان اضافه کنیم که نام و نام خانوادگی را در کنار هم بنویسید. برای این کار یک فانکشن را به‌عنوان مقدار به ویژگی‌های فانکشن اضافه می‌کنیم:

user.fullName = function() {

return this.name + this.family

}

alert(user.fullName())

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

user.fullNameSecond = function() {

return user.name + user.family

}

alert(user.fullNameSecond())

اگر نتیجه این فانکشن را آلرت بگیرید، مشاهده خواهید کرد که هیچ تغییری در نتیجه ایجاد نشده است. کاربرد this خصوصا زمانی به چشم می‌آید که شما قصد ساختن یک آبجکت از طریق constructor و از روی یک پروتوتایپ آبجکت (که در جلسات قبلی گفته شد) دارید. پس سعی کنید از کلمه this استفاده کنید.

کپی لینک

سخن پایانی:

به کمک درس این جلسه تغییرات بسیار زیادی در روند آموزش ایجاد خواهد شد. در جلسات آینده سراغ موضوع مهم دیگری به نام آرایه‌ها خواهیم رفت. با زومیت همراه شوید.

مقاله رو دوست داشتی؟
نظرت چیه؟
تبلیغات
D5-b3IranServer
داغ‌ترین مطالب روز
بهترین میکروفن ها برای ضبط پادکست و استریم
بهترین میکروفون برای ضبط پادکست و استریم [بهار و تابستان ۱۴۰۴]

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

29
1 روز قبل
نماوا تی وی رابط کاربری هوما و اپلیکیشن ها
نماوا به‌ دلیل پخش سریال سووشون مسدود شد [به‌روزرسانی: نماوا بیانیه داد]

پلتفرم نماوا به‌دلیل پخش رسال سوشوون مسدود شد.

144
1 روز قبل
بهترین مانیتورهای گیمینگ
بهترین مانیتورهای گیمینگ بازار ایران [بهار ۱۴۰۴]

داشتن مانیتور گیمینگ حرفه‌ای به بهبود تجربه‌ی بازی شما کمک زیادی می‌کند. در این مقاله بهترین مانیتورهای گیمینگ بازار را معرفی می‌کنیم.

59
1 روز قبل
آیکون بلوتوث به صورت هولوگرامی در بالای لپ تاپ
چگونه بلوتوث را در ویندوز ۱۱ فعال کنیم؟

می‌خواهید دستگاه بلوتوثی‌تان را به ویندوز ۱۱ وصل کنید، اما نمی‌دانید از کجا شروع کنید؟ این راهنمای کامل، پاسخ تمام سؤالات شما است.

10
1 روز قبل
هوش مصنوعی برای طراحی‌ وب‌ سایت
بهترین ابزار هوش مصنوعی برای طراحی‌ وب‌ سایت

استفاده از هوش مصنوعی در طراحی وب‌سایت کار را سرعت می‌بخشد، در ادامه بهترین پلتفرم‌های هوش مصنوعی طراحی وب‌سایت را در سال ۲۰۲۵ معرفی می‌کنیم.

5
1 روز قبل
داینامیک آیلند آیفون ۱۴ پرو هنگام ضبط صدا
۵ برنامه موبایلی که به‌شدت به آن‌ها نیاز دارید؛ همین‌حالا نصب کنید

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

65
1 روز قبل
بیل گیتس در حال مصاحبه درباره‌ی هوش مصنوعی در نیویورک
بیل گیتس: این ۵ کتاب ارزشمند را تابستان امسال می‌خوانم

اگر دنبال داستان‌های واقعی و الهام‌بخش هستید، لیست تابستانی امسال بیل گیتس، چند شگفتی جالب برایتان دارد.

32
1 روز قبل
تبلیغات
DN-DNShatel

نظرات

با چشم باز خرید کنید
زومیت شما را برای انتخاب بهتر و خرید ارزان‌تر راهنمایی می‌کند
ورود به بخش محصولات