Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التغليف

جزء من قسم البرمجة كائنية التوجه في رحلة JavaScript على Coddy. الدرس 17 من 56.

التغليف هو عملية دمج data داخل class في وحدة واحدة.

يساعد ذلك على وضع قيود على الوصول إلى data الخاصة بـ class مباشرةً، مما يساعدنا في النهاية على منع أي تعديل عرضي على data. 

لنرَ encapsulation قيد التطبيق من خلال مثال بسيط. أنشئ كائنًا أساسيًا بخصائص عامة:

const user = {
  name: "John",
  email: "john@example.com"
};

يمكن لأي شخص الوصول إلى هذه الخصائص وتعديلها مباشرةً:

user.name = "Jane"; // سهل التعديل من الخارج
console.log(user.email); // سهل الوصول من الخارج

يستخدم نهج أكثر تغليفًا الإغلاقات لإخفاء البيانات:

function createUser(name, email) {
  // هذه المتغيرات خاصة (مُغلَّفة)
  let userName = name;
  let userEmail = email;
  
  // أرجع كائنًا يحتوي على دوال للتفاعل مع البيانات الخاصة
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

الآن، للتفاعل مع البيانات:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// لا يمكن الوصول إلى البيانات مباشرة
console.log(encapsulatedUser.userName); // undefined
challenge icon

التحدي

تم إعطاؤك تعليمات برمجية تستخدم التغليف لحماية بيانات المستخدم. مهمتك هي إضافة أسلوب getAge() للوصول إلى العمر.

ستتحقق الاختبارات مما يلي:

  • وجود أسلوب getAge()
  • أنه يعيد العمر الصحيح
  • بقاء معلومات العمر خاصة

الناتج المتوقع:

john_doe

25

جرّب بنفسك

import { createUser } from './createUser.js';

// كود الاختبار - لا تعدّل
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // يجب أن يُخرج "john_doe"
console.log(user.getAge());      // يجب أن يُخرج 25

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت