دوال الكائنات في JavaScript: كيف تضيف سلوكاً ذكياً داخل Object؟

الكائن لا يخزن البيانات فقط، يمكنه أيضاً "القيام بأفعال". عندما نضع دالة داخل object، نسميها Method.

إذا كنت تبحث عن شرح methods في JavaScript أو كيف أستخدم this داخل object أو الفرق بين method والدالة العادية، فهذا الدرس يشرحها عملياً.

ما هي Method في JavaScript؟

method هي دالة مخزنة داخل object كخاصية. الهدف: ربط البيانات (properties) بالسلوك (methods) في نفس المكان.

قاعدة بسيطة: Object = بيانات + أفعال. البيانات = properties، الأفعال = methods.

1) تعريف Method داخل object

const person = {
  name: 'علي',
  sayHello: function () {
    console.log('مرحباً، أنا ' + this.name);
  }
};

ماذا يفعل هذا الكود؟ ينشئ كائناً فيه خاصية name ودالة sayHello.

النتيجة المتوقعة: method جاهزة للاستدعاء من نفس object.

خطأ شائع: نسيان كلمة function في الصياغة التقليدية (أو كتابة فاصلة ناقصة).

2) استدعاء Method

person.sayHello(); // مرحباً، أنا علي

ماذا يفعل هذا الكود؟ يشغّل method عبر اسم الكائن ثم النقطة.

النتيجة المتوقعة: طباعة الرسالة المرتبطة ببيانات الشخص.

خطأ شائع: استدعاء sayHello() بدون person. في سياق لا يحتوي الدالة.

3) فهم this داخل method

const car = {
  brand: 'Toyota',
  model: 'Corolla',
  fullName: function () {
    return this.brand + ' ' + this.model;
  }
};

console.log(car.fullName()); // Toyota Corolla

ماذا يفعل هذا الكود؟ يستخدم this للوصول لخصائص نفس الكائن.

النتيجة المتوقعة: دمج قيم brand وmodel وإرجاعها.

خطأ شائع: استخدام اسم كائن ثابت داخل method بدل this، مما يقلل مرونة إعادة الاستخدام.

4) صيغة مختصرة للـ methods

const user = {
  name: 'Sara',
  greet() {
    console.log('Hi ' + this.name);
  }
};

user.greet();

ماذا يفعل هذا الكود؟ يعرّف method بصيغة أقصر في object literals.

النتيجة المتوقعة: نفس سلوك الطريقة التقليدية مع كود أنظف.

خطأ شائع: الخلط بين الصيغة المختصرة وarrow function.

5) تنبيه مهم: Arrow Function مع this

const person = {
  name: 'Lina',
  badGreet: () => {
    console.log(this.name); // غالباً undefined
  }
};

person.badGreet();

ماذا يفعل هذا الكود؟ يوضح أن arrow function لا تملك this مرتبطاً بالكائن نفسه.

النتيجة المتوقعة: this قد لا يشير إلى person داخل السهم.

خطأ شائع: استخدام arrow method مع الاعتماد على this ثم ظهور نتائج غريبة.

6) Method تعدّل خصائص object

const counter = {
  value: 0,
  increment() {
    this.value++;
  }
};

counter.increment();
counter.increment();
console.log(counter.value); // 2

ماذا يفعل هذا الكود؟ method تغيّر حالة object داخلياً.

النتيجة المتوقعة: تحديث value كل مرة تستدعي increment.

خطأ شائع: نسيان this وكتابة value++ مباشرة.

Story قصيرة: لماذا this.name أصبحت undefined؟

مبتدئ كتب method بـ arrow function داخل object. استدعى الدالة فظهرت undefined بدل الاسم. بعد تحويلها إلى function عادية داخل الكائن، اشتغل this بشكل صحيح.

النتيجة في المتصفح (Console concept)

const account = {
  owner: 'Rachid',
  showOwner() {
    console.log(this.owner);
  }
};

account.showOwner();

Checklist سريعة قبل كتابة Method

  • هل الدالة مرتبطة بسلوك هذا الكائن تحديداً؟
  • هل تحتاج this للوصول إلى خصائص object؟
  • هل استخدمت function عادية بدل arrow عند الحاجة لـ this؟
  • هل استدعيت method عبر object.method()؟
أفضل ممارسة: إذا كانت الدالة تعتمد على خصائص الكائن، استخدم method واضحة داخل object لربط البيانات بالسلوك في مكان واحد.

روابط المتابعة بعد هذا الدرس

الخطوة التالية مباشرة: مقدمة Strings في JavaScript ثم أهم String Methods في JavaScript.

الأسئلة الشائعة — FAQ (أسئلة بحثية شائعة)

ما هي Methods في JavaScript؟

هي دوال مخزنة داخل object وتصف سلوكه.

ما معنى this داخل method؟

this تشير غالباً للكائن الذي استدعى method.

هل يمكن استخدام arrow function كـ method؟

يمكن، لكن يفضّل تجنبها عندما تحتاج this لأنها لا تملك this الخاص بها.

كيف أستدعي method بشكل صحيح؟

عبر اسم الكائن ثم النقطة ثم اسم method مع الأقواس.

متى أستخدم methods داخل object؟

عندما تريد ربط عمليات وسلوك ببيانات الكائن نفسه.

للمتابعة مباشرة: ابدأ بدرس مقدمة Strings في JavaScript ثم انتقل إلى أهم String Methods في JavaScript.

جرّب الآن: أنشئ Object يمثل مستخدماً يحتوي name وage، ثم أضف method تطبع رسالة تعرف بالمستخدم باستخدام this.
ممتاز! الآن فهمت كيف تجعل الكائنات لا تخزن البيانات فقط، بل تتصرف أيضاً عبر methods. في الدرس القادم ننتقل إلى Strings والتعامل الاحترافي مع النصوص.
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن