MATIN MOLKARA
SERIES: JavaScript — PART 36 OF 108

36- آموزش جاوااسکریپت | آموزش ساخت شیء با Object.create

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

در جاوااسکریپت، علاوه بر تابع سازنده (Constructor)، روش دیگری هم برای ساخت اشیاء وجود دارد که از متد Object.create استفاده می‌کند. این روش به ما اجازه می‌دهد یک شیء پایه شامل متدهای مشترک تعریف کنیم و سپس اشیاء جدیدی بسازیم که این متدها را از آن به ارث ببرند.

این الگو برای درک بهتر پروتوتایپ‌ها بسیار کاربردی است، چون بدون استفاده از Constructor نیز می‌توان رفتارهای مشترک را بین چند شیء به اشتراک گذاشت.

تعریف شیء پروتوتایپی

ابتدا یک شیء به نام personPrototypes می‌سازیم و متدهای مشترک را داخل آن قرار می‌دهیم. در این مثال، متد greeting برای نمایش نام کامل شخص استفاده می‌شود.

const personPrototypes = {
  greeting: function() {
    return `Hello there ${this.firstName} ${this.lastName}`;
  }
};

ساخت شیء با Object.create

اکنون می‌توانیم یک شیء جدید بر اساس این پروتوتایپ بسازیم. در این روش، ابتدا شیء ایجاد می‌شود و سپس ویژگی‌های آن را به‌صورت جداگانه مقداردهی می‌کنیم.

const mary = Object.create(personPrototypes);

mary.firstName = 'Mary';
mary.lastName = 'Williams';
mary.age = 30;

در این حالت، شیء mary به متدهای تعریف‌شده در personPrototypes دسترسی دارد:

console.log(mary.greeting());
// Hello there Mary Williams

افزودن متد جدید به پروتوتایپ

می‌توانیم متدهای بیشتری به شیء پروتوتایپی اضافه کنیم. برای مثال، متدی به نام getsMarried تعریف می‌کنیم تا نام خانوادگی شیء را تغییر دهد.

const personPrototypes = {
  greeting: function() {
    return `Hello there ${this.firstName} ${this.lastName}`;
  },
  getsMarried: function(newLastName) {
    this.lastName = newLastName;
  }
};

حالا اگر این متد را روی mary اجرا کنیم، مقدار lastName تغییر می‌کند:

mary.getsMarried('Thompson');

console.log(mary.greeting());
// Hello there Mary Thompson

روش دوم مقداردهی با پارامتر دوم Object.create

Object.create یک روش دیگر هم برای ساخت شیء در اختیار ما می‌گذارد. در این روش، علاوه بر پروتوتایپ، یک شیء دوم نیز به‌عنوان پارامتر ارسال می‌کنیم که ویژگی‌های اولیه را مشخص می‌کند.

const matin = Object.create(personPrototypes, {
  firstName: { value: 'Matin' },
  lastName: { value: 'Molkara' },
  age: { value: 36 }
});

اکنون شیء matin هم به ویژگی‌های خودش دسترسی دارد و هم متدهای موجود در پروتوتایپ را به ارث می‌برد:

console.log(matin.greeting());
// Hello there Matin Molkara

تفاوت این روش با Constructor

استفاده از Object.create راهی ساده و مستقیم برای ساخت اشیاء بر پایه پروتوتایپ است. در این روش:

  • نیازی به تعریف تابع سازنده نداریم.
  • متدهای مشترک را در یک شیء پایه قرار می‌دهیم.
  • اشیاء جدید مستقیماً از آن شیء ارث‌بری می‌کنند.

این روش برای یادگیری ساختار پروتوتایپ‌ها بسیار مفید است، هرچند در پروژه‌های مدرن معمولاً از class در ES6 بیشتر استفاده می‌شود، چون خوانایی و نگهداری کد را ساده‌تر می‌کند.

جمع‌بندی

متد Object.create یکی از روش‌های مهم ساخت شیء در جاوااسکریپت است. با این روش می‌توان یک شیء پایه شامل متدهای مشترک ساخت و اشیاء دیگر را بر اساس آن ایجاد کرد. همچنین می‌توان ویژگی‌ها را هم بعد از ساخت شیء و هم هنگام ایجاد آن مقداردهی کرد. این الگو درک عمیق‌تری از نحوه کار پروتوتایپ‌ها در جاوااسکریپت به شما می‌دهد.

// 0 comments
#جاوااسکریپت#آموزش جاوااسکریپت#ES5#برنامه نویسی شی گرا#شیء در جاوااسکریپت#پروتوتایپ#Object.create

نظرات (0)

نظر خود را بنویسید