Quick Table of Contents
[تحسين] بعض المهارات الإضافية في إنشاء الكائنات.
سنتعلم في هذا الدرس بعض المهارات الإضافية بالنسبة لإنشاء الكائن الديناميكي :
الكائنات المتداخلة
<html> <script language="JavaScript"> function student(name, age, grade, father, mother) { this.name = name this.age = age this.grade = grade this.parents = new parents(father, mother) } function parents(father, mother) { this.father = father this.mother = mother } var student1 = new student("Ahmed", 16, 85, "Mohamed", "Asmaa") document.write(student1.name+"<br>") document.write(student1.age+"<br>") document.write(student1.grade+"<br>") document.write(student1.parents.father+"<br>") document.write(student1.parents.mother +"<br>") </script> </html> حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة
var student1 = new student("Ahmed", 16, 85, "Mohamed", "Asmaa")بعد إنشاء المثيل student1 نقوم بطبع قيم الخصائص من خلال هذه السطور document.write(student1.name+"<br>") document.write(student1.age+"<br>") document.write(student1.grade+"<br>") document.write(student1.parents.father+"<br>") document.write(student1.parents.mother +"<br>") student1.parents.father الطريقة الأخرى لإضافة الدوال في الكائنات: بدلا من أن نكتب تعريف الـmethods داخل تعريف الكائن كما فعلنا بالسابق يمكننا أن نعرف الدالة بالخارج و نستخدم إسمها في إضافتها للكائن كما بهذا المثال:<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> function construct(name, val) { this[name] = val } function displayStudent() { var result = "" result += this.name + " -- " result += "a " + this.age + " - year old " result += this.grade + "% average student.<BR>" result += this.name + "'s parents -- " result += this.parents.father + ", " + this.parents.mother result += ".<BR>" document.write(result) } function student(name, age, grade, father, mother) { this.construct = construct this.display = displayStudent this.name = name this.age = age this.grade = grade this.parents = new parents(father, mother) } function parents(father, mother) { this.father = father this.mother = mother } var student1 = new student("Mohamed", 16, 85, "Ahmed", "Samir") student1.construct("friend", "Ali") document.write(student1.friend) document.write("<hr>"); student1.display() </SCRIPT> </HEAD> <BODY> </BODY> </HTML>
this.construct = construct this.display = displayStudent بعد إنشاء مثيل student1 يمكننا إستخدام الدوال المعرفة داخل الكائن ,ففي هذا السطر student1.construct("friend", "Ali")من خلال دالة construct أضفنا خاصية جديدة و هي friend و وضعنا قيمتها Ali ثم بعد ذلك قمنا بطباعة الخاصية document.write(student1.friend) أما في هذا السطر student1.display()فقد إستدعينا الدالة display التي قمنا بتعريفها بالطريقة الجديدة . Prototype النموزج Prototype : هو عبارة عن خاصية موجودة في أي كائن سواء كان معرف مسبقا في اللغة أو قام المبرمج بتعريفه ,و يمكن من خلال هذه الخاصية Prototype إضافة خواص أو دوال جديدة إلى الكائن كما سيتضح في المثال التالي.النموزج
تعلمنا من قبل أنه عندما تريد إنشاء نص فإنك تقوم بوضع النص بين علامتي تنصيص "" أو '' ثم تضعه في متغير
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> var str1 = new String("a"), str2 = new String("b") function repeat(n, delimiter) { var text = "" var str = this.toString() // make sure the object is string while (n >= 0) { text += str text += delimiter n-- } return text } String.prototype.repeat = repeat // add a repeat() method to alert(str1.repeat(5, " ; ")) alert(str1) alert(str2.repeat(7, " ")) alert(str2.repeat(3,"+")) </SCRIPT> </HEAD> <BODY> </BODY> </HTML> حاول بنفسك »اضغط على "حاول بنفسك" لكى ترى كيف تعمل فى الحقيقة var str="text"هناك طريقة أخرى لإنشاء نص و هي من خلال الكائن String و هي هكذا: str=new String("text")و الفرق بين الطريقة الأولى و الثانية أنك إذا أختبرت نوع البيانات باستخدام typeof str في الأولى سيكون string و في الثانية سيكون object و في الحالتين يمكنك إستخدام جميع الخصائص و الدوال الخاصة بالكائن String . و في المثال ستجد أنه في البداية قمنا بإنشاء نصين بالطريقة الثانية . var str1 = new String("a"), str2 = new String("b")ثم قمنا بتعريف دالة تسمى repeat تقوم بتكرار النص عدد من المرات و التي من خلال الـprototype سنضيفها للكائن String و هذا السطر هو الذي يقوم بهذه المهمة : String.prototype.repeat = repeatو بإضافة الدالة من خلال الprototype للكائن فإنه يمكن إستخدامها مع أي مثيل مأخوذ منه و كما ترى قمنا في المثال بإستخدامها مع str1 و str2 و تظهر أهمية ال prototype في أنه يمكنك من إضافة دوال و خصائص إلى كائنات ديناميكية معرفة مسبقا مثل Date وString.
25 / نوفمبر / 2011 الساعة 15:38
|