تابع سازنده شی در JS

گاهی اوقات نیاز است تا اشیاء زیادی از یک قالب ایجاد کنیم.

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

نکته: معمولا تابع سازنده را با حرف بزرگ نامگذاری می کنند.

function Student(name, family, age, weight) {
    this.name = name;
    this.family = family;
    this.age = age;
    this.weight = weight;
}

const stu1 = new Student("Ehsan", "Eslami", 31, 97.5);

نکته: در تابع سازنده، this به شیء جدید اشاره می کند.

ما می‌توانیم از ()new Student برای ایجاد اشیاء جدید استفاده کنیم.

const stu1 = new Student("Ehsan", "Eslami", 31, 97.5);
const stu2 = new Student("Amir", "Emami", 22, 103);
const stu3 = new Student("Ali", "Asef", 18, 75);
const stu4 = new Student("Mahsa", "Fallah", 65);

مقادیر پیش‌فرض ویژگی در JS

در تابع سازنده می توانیم یک مقدار به صورت پیشفرض برای اشیاء در نظر بگیریم.

function Student(name, family, age, weight) {
    this.name = name;
    this.family = family;
    this.age = age;
    this.weight = weight;
    this.lang = 'JS';
}

افزودن ویژگی به شیء در JS

اضافه کردن ویژگی به شیء ایجاد شده آسان است.

student.lang = 'JS';

نکته: این مقدار فقط به متغیر stu1 اضافه می شود و به ویژگی های تابع سازنده Student اضافه نمی شود.

افزودن ویژگی به تابع سازنده در JS

نمی‌توان به یک تابع سازنده شیء، ویژگی جدیدی اضافه کرد.

Student.lang = "JS";

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

Student.prototype.lang = "JS";

متدهای تابع سازنده در JS

یک تابع سازنده همچنین می تواند متدهایی داشته باشد.

function Student(name, family, age, weight) {
    this.name = name;
    this.family = family;
    this.age = age;
    this.weight = weight;
    this.fullName = function() {
        return `${this.name} ${this.family}`;
    };
}

افزودن متد به شیء در JS

اضافه کردن متد به شیء ایجاد شده آسان است.

stu1.changeName = function (name) {
    this.name = name;
}
stu1.changeName('Iman');

نکته: این متد فقط به متغیر stu1 اضافه می شود و به متدهای Student اضافه نمی شود

افزودن متد به تابع سازنده در JS

نمی‌توان به یک تابع سازنده شیء، متد جدیدی اضافه کرد.

Student.fullName = function() {
    return `${this.name} ${this.family}`;
};

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

Student.prototype.fullName = function() {
    return `${this.name} ${this.family}`;
};
توسعه دهندگان
احسان اسلامی