OOP javascript الجزء الرابع


السلام عليكم و رحمه الله تعالى و بركاته

الوراثه فى جافاسكربت prototypal بمعنى ان الكائنات ترث من بعضها ، لا يوجد class فى اللغه لذلك لايوجد classical inheritance ، و عليه لا يوجد كلمتى extend او inherit ، لكنه بالرغم من ذلك يمكن لكائنات الجافاسكربت الوراثه من بعضها عن طريق الخاصيه prototype التى ذكرتها فى الجزء الثالث ، و المثال البسيط التالى يوضح إنشاء اتنين function constructor :

function Parent(){ // User constructor
    this.color = "black"; // public variable
    this.hair = "brown"; // public variable
}

function Child(){
    this.name="mostafa"; // public variable
    this.color = "white"; // public variable
}

فى الكود السابق انشأت اتنين constructor الاول بإسم Parent له خاصيتين color و hair ، و الconstructor التانى بإسم child يحتوى على خاصيتين name و color . أما الكود التالى فيوضح كيفيه وراثه Child من Parent :

Child.prototype = new Parent();

فى الكود السابق Child يرث Parent ، عن طريق تسجيل كائن جديد من نوع Parent لل Child.prototype التى تستخدم كما وضحت فى الجزء الثالث لإضافه خصائص ووظائف عامه جديده و يوضح الكود التالى إنشاء كائن جيده من Child بعد وراثته من Parent

var me = new Child();
alert(me.color); // white
alert(me.name); // mostafa
alert(me.hair); // brown

كما بوضح الكود السابق الكائن الجديد me المشتق من Child قد ورث الخاصيه hair من parent و لم يرث الخاصيه color لأنها موجوده فى ال Child ، و نظام الوراثه فى جافاسكربت لا يورث الخصائص التى بنفس الإسم بين الكائنين .

لكن ماذا عن الخصائص الخاصه private variables هل تورث بين الكائنات ؟ لا – كما يوضح المثال التالى :

function Parent(){ // User constructor
    var secret = "Iam not your dad"; // private variable
    this.color = "black"; // public variable
    this.hair = "brown"; // public variable
}

function Child(){
    this.name="mostafa"; // public variable
    this.color = "white"; // public variable
    this.getSecret = function(){
        alert(secret)
    }
}

فى الكود السابق قمت بإضافه ال private variable بإسم secret فى ال Parent ، و قمت بإضافه الوظيفه getSecret فى Child التى تقوم بعمل alert لل secret ، مع ملاحظه انها لاتحتوى على المتغير secret ، تجربه الوراثه هى التى ستثبت لنا انها لن ترث هذه المتغير الخاص فى Parent كما يوضح الكود التالى :

Child.prototype = new Parent(); // child inherits parent
var me = new Child();
me.getSecret(); // Error: secret is not defined

الأوسمة: ,

3 تعليقات to “OOP javascript الجزء الرابع”

  1. hguhf Says:

    الف شكر

  2. ahmad ismail Says:

    شكراً لك، درس واضح وأفادني
    ضع مواضيع أكثر
    جزاك الله كل الخير

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s


%d مدونون معجبون بهذه: