شی جاوا اسکریپت شماره 4 – انجمن DEV

در آخرین فصل ما یک قطعه بسته را دیدیم به نام “محیط واژگانی“، فعلاً آن را متوقف کنید و به سری Object خود در این وبلاگ بازگردید.
در فصل آغازین ما یاد گرفتیم که شی چیست و چگونه آن را ایجاد کنیم. در فصل گذشته، شی را با استفاده از نحو لغوی Object ایجاد کردیم. اکنون میخواهیم یک شی با استفاده از سازنده نحو.
شی سازنده
قبل از ایجاد Object، موارد استفاده از Object ایجاد شده با استفاده از Constructor Syntax را اطلاع دهید.
let person = {
firstName: 'Rachael',
lastName: 'Ross'
};
همانطور که می بینید این روش اصلی ایجاد یک شی با استفاده از نحو تحت اللفظی است، چه می شود اگر نخواهیم یک شیء را چندین بار بسازیم اما با مقادیر مختلف، در اینجا از نحو سازنده استفاده می شود.
نحو اصلی این است،
`function Name(firstName, lastName){
this.firstName = firstName;
this.lastName = lastName;
}
`
این نحو اصلی تابع سازنده است، اینها مانند تابع عادی هستند، اما قوانین فراخوانی توابع سازنده چنین بود،
1. نام یک تابع سازنده با یک حرف بزرگ مانند Person، Document و غیره شروع می شود.
2. یک تابع سازنده باید فقط با عملگر جدید فراخوانی شود.
حالا بیایید یک شی با تابع سازنده خود ایجاد کنیم،
برای ایجاد یک شی جدید، باید تابع خود را فراخوانی کنیم.جدیدکلمه کلیدی برای ایجاد یک نمونه جدید از یک شی
مثلا،
`let friends = new Name('Chandler','Monica');
`
این کاملاً درست است، پس در هنگام ایجاد اشیاء جدید چه چیزی پشت این کار وجود دارد.
1. یک شی خالی جدید ایجاد کنید و آن را به این متغیر اختصاص دهید.
2. آرگومانهای «چندلر» و «مونیکا» را به ویژگیهای firstName و lastName شیء اختصاص دهید.
3. مقدار “this” را برگردانید.
بنابراین، این ممکن است معادل باشد
`
`
function Name(firstName, lastName) {
// this = {};
// add properties to this
this.firstName = firstName;
this.lastName = lastName;
// return this;
`
`
Pretty Straigt.We can also add method to the Constructor function,
let’s create a method to get the fullname of an Object,as follows.
`function Name(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.getFullName = function () {
return this.firstName + " " + this.lastName;
};
}`
اکنون یک متد به تابع خود اضافه کرده ایم. بیایید آن را فراخوانی کنیم
`
`
let friends = new name(‘Ross’,’Rachael’);
console.log(person.getFullName());
خروجی:
راس راشل
`
`
ساده است اما کارآمد نیست، زیرا هر زمان که یک نمونه جدید برای هر شیء ایجاد کنید getFullName() کپی می شود و کارآمد حافظه نیست. برای غلبه بر این موضوع، می توانیم این متد را در Object ایجاد کنیم.نمونه اولیهبه طوری که هر نمونه از آن نوع بتواند از روش استفاده کند.
اگر در داخل تابع سازنده از return استفاده کنیم،
بازگشت از توابع سازنده
به طور معمول، یک تابع سازنده به طور ضمنی این مجموعه را به شی جدید ایجاد شده برمی گرداند. اما اگر یک عبارت بازگشتی داشته باشد، قوانین به شرح زیر است:
1.اگر بازگشت با یک شی فراخوانی شود، تابع سازنده به جای این، آن شی را برمی گرداند.
2.اگر بازگشت با مقداری غیر از یک شی فراخوانی شود، نادیده گرفته می شود.
در حال حاضر همه چیز در مورد عملکرد سازنده است، در پست بعدی بیشتر در مورد آن خواهیم دید.
از شما به خاطر صرف وقت متشکریم،
سام