خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

آشنایی با سازنده ها در جاوا اسکریپت

جاوا اسکریپت برنامه نویسی شی گرا را کاملاً متفاوت از اکثر زبان های دیگر مدیریت می کند. همه چیز با سازنده ها شروع می شود.

جاوا اسکریپت یک زبان جا افتاده است اما فقط از برنامه نویسی شی گرا کلاسیک (OOP) در ES6 پشتیبانی می کند. تا زمانی که جاوا اسکریپت ویژگی هایی مانند اعلان کلاس ها را اضافه کرد، OOP را با استفاده از یک الگوی کمتر شناخته شده مبتنی بر نمونه اولیه مدیریت می کرد. با این حال، با هر دو روش، می توانید برنامه های پیچیده ای ایجاد کنید که از ویژگی های مبتنی بر شی استفاده می کنند.

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

سازنده در جاوا اسکریپت چیست؟

لپ تاپی که خطوط کد را در یک IDE نشان می دهد

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

نحو سازنده

function NameOfConstructor() {
    this.property1 = "Property1";
    this.property2 = "Property2";
    this.property3 = "Property3";
}

می توانید با کلمه کلیدی تابع یک سازنده ایجاد کنید زیرا اساساً مانند هر تابع دیگری است. با این حال، سازندگان به قراردادهای زیر پایبند هستند:

  1. برای متمایز کردن آنها از سایر توابع، از نامی برای سازنده خود استفاده کنید که با حرف بزرگ شروع می شود.
  2. سازندگان از این کلمه کلیدی متفاوت استفاده می کنند. در داخل یک سازنده، این به شی جدیدی که سازنده ایجاد خواهد کرد اشاره دارد.
  3. بر خلاف توابع جاوا اسکریپت، سازنده ها به جای برگرداندن مقادیر، ویژگی ها و رفتارها را تعریف می کنند.

استفاده از سازنده برای ایجاد اشیاء جدید

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

function Student() {
    this.name = "Gloria";
    this.gender = "Female";
    this.age = 19;
}
 
let femaleStudent = new Student();

در این مثال، womenStudent یک شی است که از سازنده Student ایجاد شده است. از کلمه کلیدی جدید برای فراخوانی تابع به عنوان سازنده استفاده کنید. این کلمه کلیدی به جاوا اسکریپت می گوید که یک نمونه جدید از Student ایجاد کند. شما نباید این تابع را بدون کلمه کلیدی new فراخوانی کنید زیرا این در داخل سازنده به یک شی جدید اشاره نمی کند. زنStudent پس از ساخت تمام ویژگی های Student را دارد. شما می‌توانید به این ویژگی‌ها دسترسی داشته باشید و آن‌ها را درست مانند هر شی دیگری تغییر دهید.

مطلب مرتبط:   نحوه تبدیل تصویر PNG به JPEG با استفاده از Go

نکات مهمی که باید درباره سازندگان جاوا اسکریپت بدانید

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

استفاده از سازنده ها با آرگومان ها

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

هر زمان که یک شی از یک سازنده ایجاد می کنید، شی تمام ویژگی های اعلام شده در سازنده را به ارث می برد. به عنوان مثال، خانمStudent که در بالا ایجاد کردید، دارای نام، جنسیت و سن با مقادیر اولیه ثابت خواهد بود. در حالی که می توانید هر ویژگی را به صورت دستی تغییر دهید، اگر برنامه ای را با استفاده از اشیاء زیادی بنویسید کار بسیار زیادی خواهد بود.

خوشبختانه، سازنده های جاوا اسکریپت می توانند پارامترها را مانند هر تابع دیگری بپذیرند. می توانید سازنده Student را تغییر دهید تا دو پارامتر را بپذیرد:

function Student(name, gender) {
    this.name = name;
    this.gender = gender;
    this.age = 19;
}

تمام اشیاء ایجاد شده از موارد فوق دارای خواهد بود
سن
تنظیم کنید
19.
اگر خاصیتی وجود دارد که می خواهید همه اشیا داشته باشند، می توانید سازنده خود را به این شکل طراحی کنید.

اکنون می توانید با ارسال آرگومان های مختلف، اشیاء منحصر به فرد را از یک سازنده تعریف کنید.

آرگومان ها سازندگان را انعطاف پذیرتر می کنند. آنها در زمان صرفه جویی می کنند و کد پاک را تشویق می کنند.

مطلب مرتبط:   شروع کار با GitBook: چگونه بلوک های محتوا را اضافه کنیم

تعریف روش های شی

متد یک ویژگی شی است که یک تابع است. روش‌ها کد شما را در OOP تقویت می‌کنند زیرا رفتارهای متفاوتی را به اشیاء شما اضافه می‌کند. به عنوان مثال:

function Student(name, gender) {
    this.name = name;
    this.gender = gender;
    this.age = 19 ;
 
    this.sayName = function () {
        return `My Name is ${name}`;
    }
}

در بالا تابع sayName را به سازنده اضافه می کند.

فرض کنید از این سازنده برای ایجاد یک شی استفاده می‌کنید که در یک متغیر یعنی womenStudent ذخیره می‌کنید. سپس می توانید این تابع را با کد زیر فراخوانی کنید:

femaleStudent.sayName()

نمونه اولیه

پیش از این، Student را به گونه‌ای ایجاد کردیم که تمام نمونه‌های آن دارای ویژگی age با مقدار 19 باشند. این باعث می‌شود که برای هر نمونه دانشجویی که ایجاد می‌کنید، یک متغیر تکراری داشته باشید.

برای جلوگیری از این تکرار، جاوا اسکریپت از مفهوم نمونه های اولیه استفاده می کند. تمام اشیاء ایجاد شده از یک سازنده خصوصیات نمونه اولیه آن را به اشتراک می گذارند. می‌توانید مطابق شکل زیر، ویژگی سن را به نمونه اولیه Student اضافه کنید:

Student.prototype.age = 19;

با این کار تمام نمونه های Student دارای خاصیت سن خواهند بود. اعلام ویژگی های نمونه اولیه راهی برای کاهش کدهای تکراری در برنامه شما است. این کد شما را تا حد امکان استاندارد می کند.

یک ویژگی نمونه اولیه می تواند یک شی باشد

همانطور که در بالا توضیح داده شد می توانید ویژگی های Prototype را به صورت جداگانه اضافه کنید. اما اگر خواص زیادی برای اضافه کردن دارید، این می تواند ناخوشایند باشد.

به عنوان یک جایگزین، شما می توانید تمام ویژگی های مورد نیاز خود را در یک شی جدید داشته باشید. با انجام این کار، تمام ویژگی ها را یکجا تنظیم می کنید. مثلا:

Student.prototype = {
    age: 19,
    race: "White",
    disability: "None"
}

به یاد داشته باشید که تنظیم کنید
سازنده
ویژگی هنگام تنظیم نمونه های اولیه برای یک شی جدید.

Student.prototype = {
     constructor : Student,
    age: 19,
    race: "White" ,
    disability: "None"
}

می توانید از این ویژگی برای بررسی اینکه کدام تابع سازنده یک نمونه ایجاد کرده است استفاده کنید.

مطلب مرتبط:   فشرده سازی تصاویر در Node.js با شارپ

سوپرتیپ ها و وراثت

وراثت روشی است که برنامه نویسان برای کاهش خطا در برنامه های خود از آن استفاده می کنند. این راهی برای پایبندی به اصل خودت را تکرار نکن (DRY) است.

فرض کنید دو سازنده دارید – دانش آموز و معلم – که دو ویژگی نمونه اولیه مشابه دارند.

Student.prototype = {
    constructor: Student,
 
    sayName: function () {
        return `My Name is ${name}`;
    }
}
 
Teacher.prototype = {
    constructor: Teacher,
 
    sayName: function () {
        return `My Name is ${name}`;
    }
}

هر دوی این سازنده ها متد sayName را به طور یکسان تعریف می کنند. برای جلوگیری از این تکرار غیر ضروری، می توانید یک سوپرتایپ ایجاد کنید.

function IndividualDetails(){};
 
IndividualDetails.prototype = {
    constructor: IndividualDetails,
 
    sayName: function () {
        return `My Name is ${name}`;
    }
};

سپس می توانید sayName را از هر دو سازنده حذف کنید.

برای به ارث بردن خواص از supertype، از Object.create() استفاده کنید. شما نمونه اولیه هر دو سازنده را روی نمونه ای از سوپرتایپ تنظیم می کنید. در این مورد، نمونه های اولیه Student و Teacher را روی نمونه ای از IndividualDetails قرار می دهیم.

اینجاست:

Student.prototype = Object.create(IndividualDetails.prototype);
Teacher.prototype = Object.create(IndividualDetails.prototype);

با انجام این کار، Student و Teacher تمام ویژگی های supertype، IndividualDetails را به ارث می برند.

این نحوه تمرین DRY در OOP با استفاده از supertypes است.

سازنده ها تغییر دهنده بازی هستند

سازنده ها جزء کلیدی جاوا اسکریپت هستند و تسلط بر عملکرد آنها برای توسعه برنامه های OOP JavaScript بسیار مهم است. شما می توانید از یک سازنده برای ایجاد اشیایی که ویژگی ها و متدهای مشترکی دارند استفاده کنید. همچنین می توانید از وراثت برای تعریف سلسله مراتب اشیا استفاده کنید.

در ES6 می توانید از کلمه کلیدی class برای تعریف کلاس های شی گرا کلاسیک استفاده کنید. این نسخه از جاوا اسکریپت از یک کلمه کلیدی سازنده نیز پشتیبانی می کند.