DEV Community

abuabdelrahman1413
abuabdelrahman1413

Posted on

📚 مفهوم البرمجة الشيئية في JavaScript: البروتوتايب والفئات 🚀

📚 مفهوم البرمجة الشيئية في JavaScript: البروتوتايب والفئات 🚀

كتير من الناس بيسألوا عن البرمجة الشيئية في JavaScript ويقولوا إنه JavaScript مش بتدعم OOP (البرمجة الشيئية) زي اللغات التانية. طيب، هل الكلام ده صحيح؟ خلونا نفهم الموضوع بشكل مبسط.

في JavaScript، إحنا بنستخدم نموذج البروتوتايب مش الفئات التقليدية اللي بنشوفها في لغات زي Java أو C++. يعني في JavaScript، الكائنات بتشتق من كائنات تانية مباشرةً. كل كائن في JavaScript ليه خاصية اسمها [[Prototype]] (أو __proto__) اللي بتخليه يرث الخصائص والطرق من كائن تاني.

ازاي يعني؟

تخيل إنه عندك كائن اسمه person:

let person = {
  name: "Alice",
  greet: function() {
    console.log("Hello, my name is " + this.name);
  }
};
Enter fullscreen mode Exit fullscreen mode

ممكن تبني كائن جديد اسمه student يشتق من person:

let student = Object.create(person);
student.name = "Bob";
student.greet(); // "Hello, my name is Bob"
Enter fullscreen mode Exit fullscreen mode

طيب، من وقت ES6 (الإصدار السادس من JavaScript) أضيفت الفئات (class) اللي خلت الموضوع أسهل وأوضح. لكن تحت الغطاء، الفئات دي بتستخدم نموذج البروتوتايب برضه. يعني ممكن تستخدم الفئات كده:

class Person {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log("Hello, my name is " + this.name);
  }
}

let alice = new Person("Alice");
alice.greet(); // "Hello, my name is Alice"

class Student extends Person {
  // ممكن تضيف خصائص وطرق هنا
}

let bob = new Student("Bob");
bob.greet(); // "Hello, my name is Bob"
Enter fullscreen mode Exit fullscreen mode

خلاصة:

JavaScript بتدعم البرمجة الشيئية باستخدام نموذج البروتوتايب، والفئات اللي اتضافت في ES6 بتسهل الموضوع بس تحت الغطاء كله معتمد على البروتوتايب. يعني نقدر نقول إن JavaScript فيها مرونة كبيرة في التعامل مع الكائنات حتى لو بتختلف عن اللغات التانية.

أتمنى يكون الموضوع اتضح! 🌟 إذا عندكم أي أسئلة، أنا هنا عشان أساعد.

Top comments (0)