در جاوا اسکریپت، توابع سازنده (Constructors) و پروتوتایپها (Prototypes) ابزارهای کلیدی برای ایجاد و مدیریت اشیاء هستند. این مفاهیم پایهای برای برنامهنویسی شیءگرا در جاوا اسکریپت به شمار میروند و به شما این امکان را میدهند که ساختارهای پیچیده و قابل استفاده مجدد را بسازید. در این مقاله، به بررسی این دو مفهوم و نحوه استفاده از آنها خواهیم پرداخت.
توابع سازنده به شما این امکان را میدهند که شیءهای جدید با ویژگیها و متدهای خاص خود ایجاد کنید. این توابع به صورت معمول با حرف بزرگ آغاز میشوند و برای ایجاد و مقداردهی اولیه به اشیاء استفاده میشوند.
یک تابع سازنده با استفاده از کلمهکلیدی function تعریف میشود. به طور معمول، این تابع خصوصیات را با استفاده از کلمهکلیدی this تنظیم میکند.
function Person(name, age) {
this.name = name;
this.age = age;
}
const ali = new Person('Ali', 30);
console.log(ali.name); // Output: Ali
console.log(ali.age); // Output: 30
در این مثال:
تابع سازنده Person دو پارامتر name و age را دریافت کرده و آنها را به خصوصیات this.name و this.age نسبت میدهد.
کلمهکلیدی new، یک شیء جدید از نوع Person ساخته میشود.
با استفاده از توابع سازنده میتوانید نمونههای مختلفی از یک کلاس بسازید:
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
const car1 = new Car('Toyota', 'Corolla', 2020);
const car2 = new Car('Honda', 'Civic', 2021);
console.log(car1); // Output: Car { make: 'Toyota', model: 'Corolla', year: 2020 }
console.log(car2); // Output: Car { make: 'Honda', model: 'Civic', year: 2021 }
در اینجا، از تابع سازنده Car برای ایجاد دو نمونه مختلف از اتومبیل استفاده شده است.
پروتوتایپها به شما این امکان را میدهند که متدها و خصوصیات مشترک را بین نمونههای مختلف شیء به اشتراک بگذارید. هر شیء در جاوا اسکریپت دارای یک ویژگی پنهان به نام [[Prototype]] است که به پروتوتایپ خود اشاره میکند.
میتوانید متدها را به پروتوتایپ یک تابع سازنده اضافه کنید تا تمام نمونههای ساخته شده از آن تابع سازنده به این متدها دسترسی داشته باشند.
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};
const ali = new Person('Ali', 30);
ali.greet(); // Output: Hello, my name is Ali and I am 30 years old.
در این مثال:
متد greet به پروتوتایپ Person اضافه شده است. این متد در تمام نمونههای Person در دسترس خواهد بود.
پروتوتایپها به شما این امکان را میدهند که دادهها و متدها را بین نمونههای مختلف به اشتراک بگذارید، که میتواند منجر به بهبود کارایی و کاهش استفاده از حافظه شود.
function Vehicle(make, model) {
this.make = make;
this.model = model;
}
Vehicle.prototype.getDetails = function() {
return `${this.make} ${this.model}`;
};
const bike = new Vehicle('Yamaha', 'MT-07');
console.log(bike.getDetails()); // Output: Yamaha MT-07
در اینجا، متد getDetails به پروتوتایپ Vehicle اضافه شده و برای نمونههای مختلف Vehicle قابل استفاده است.
پروتوتایپها به شما این امکان را میدهند که ویژگیها و متدها را از یک تابع سازنده به تابع سازنده دیگر به ارث ببرید.
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function() {
console.log(`${this.name} makes a noise.`);
};
function Dog(name) {
Animal.call(this, name); // فراخوانی سازنده Animal
}
// تنظیم پروتوتایپ Dog برای ارثبری از Animal
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.bark = function() {
console.log(`${this.name} barks.`);
};
const myDog = new Dog('Rex');
myDog.speak(); // Output: Rex makes a noise.
myDog.bark(); // Output: Rex barks.
در این مثال:
تابع سازنده Dog از Animal ارث میبرد.
با استفاده از Object.create(Animal.prototype), پروتوتایپ Dog به پروتوتایپ Animal متصل میشود.
متد bark به پروتوتایپ Dog اضافه شده است.
توابع سازنده: برای ایجاد و مقداردهی اولیه به اشیاء استفاده میشود. توابع سازنده به ازای هر نمونه جدید، خصوصیات جدید را تنظیم میکنند.
پروتوتایپها: برای اشتراکگذاری متدها و خصوصیات بین نمونههای مختلف استفاده میشود. متدها و خصوصیات پروتوتایپها تنها یک بار در حافظه ذخیره میشوند و در تمام نمونهها مشترک هستند.
توابع سازنده و پروتوتایپها ابزارهای قدرتمندی در جاوا اسکریپت برای ایجاد و مدیریت اشیاء هستند. توابع سازنده به شما این امکان را میدهند که اشیاء جدید را ایجاد کنید، در حالی که پروتوتایپها امکان اشتراکگذاری ویژگیها و متدها بین نمونهها را فراهم میکنند. با استفاده صحیح از این ابزارها، میتوانید کدهای بهینهتر و قابل نگهداریتری بنویسید.
نظری یافت نشد
معرفی جاوا اسکریپت و نحوه استفاده از آن برای توسعه وب تعاملی: راهنمای جامع
27م شهریور 1402
مطالعه بیشتر
مفهوم برنامهنویسی همزمان و ناهمزمان در جاوا اسکریپت: تفاوتها، مثالها و کاربردها
29م مهر 1403
مطالعه بیشتر
آموزش لیستها در CSS: طراحی و استایلدهی ساده برای لیستهای HTML
10م شهریور 1402
مطالعه بیشتر
بررسی کتابخانههای محبوب جاوا اسکریپت: آشنایی با Lodash و Moment.js - مزایا و کاربردها
4م آبان 1403
مطالعه بیشتر
آموزش ساخت یک Todo List با استفاده از DOM و جاوا اسکریپت: راهنمای گام به گام
3م آبان 1403
مطالعه بیشتر
آموزش ساخت یک برنامه ساده با Fetch API در جاوا اسکریپت: راهنمای گام به گام
1م آبان 1403
مطالعه بیشتر
آموزش ایجاد Transitions و انیمیشنهای صفحه بارگذاری (Loader) در CSS: طراحی لودرهای جذاب
16م آبان 1403
مطالعه بیشتر
آموزش متغیرهای سفارشی (Custom Properties) در CSS: نحوه تعریف و استفاده از var
18م شهریور 1402
مطالعه بیشتر
مقدمهای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان
4م شهریور 1402
مطالعه بیشتر
آموزش کامنتها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت
23م مرداد 1402
مطالعه بیشتر
آموزش طراحی و استایلدهی فرمها با CSS: ایجاد فرمهای کاربرپسند و واکنشگرا
18م شهریور 1402
مطالعه بیشتر
آموزش توسعه بازیهای ساده با استفاده از جاوا اسکریپت و Canvas API: راهنمای گام به گام
5م آبان 1403
مطالعه بیشتر
تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد