كل وظيفة لها سمة النموذج الأولي، تسمى النموذج الأولي. يحتوي كل كائن أيضًا على نموذج أولي، والذي يمكن الوصول إليه من خلال __proto__ في Firefox/Safari/Chrome/Opera. لا توجد واجهة ذات صلة متوفرة في IE6/7/8.
انسخ رمز الكود كما يلي:
وظيفة الشخص () {
this.method1 = الدالة(){}
}
Person.prototype.method2 = function(){}
وظيفة رجل () {}
Man.prototype = new Person();
Man.prototype.m1 = الدالة(){}
Man.prototype.m2 = الدالة(){}
var m = new Man();
ل(فار أ في م.__proto__){
تنبيه (أ)؛
}
يتم تعريف الفئة الأصل "الشخص" والفئة الفرعية "الرجل". جديد كائن رجل وطباعة جميع الخصائص.
يضيف ECMAScript V5 طريقة getPrototypeOf ثابتة إلى الكائن (يتم تنفيذها بواسطة Firefox/Chrome) للحصول على النموذج الأولي للكائن. يمكن استخدامه لتقليد Java.
انسخ رمز الكود كما يلي:
وظيفة الشخص () {
this.method1 = function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
وظيفة الرجل () {
this.m1 = الدالة(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();// وراثة النموذج الأولي
Man.prototype.m2 = الدالة(){
Object.getPrototypeOf(this).method2();
}
فار مان = رجل جديد();
man.m1();
man.m2();
الطريقة m1 المعلقة على هذا في الفئة الفرعية Man تستدعي الطريقة 1 المعلقة على هذا في الفئة الأصل Person، والطريقة m2 المعلقة على النموذج الأولي تستدعي الطريقة 2 في النموذج الأولي للفئة الأصلية.
يمكن أن نرى مما سبق أن النموذج الأولي للكائن لا يتضمن السمات الموجودة في النموذج الأولي للمنشئ فحسب، بل يتضمن أيضًا السمات الموجودة في المنشئ. بالطبع، لأسباب تتعلق بالسياق في JavaScript، لا يمكن تحويل هذا الموجود في الفصل الأصلي تلقائيًا إلى الفصل الفرعي، ويلزم بعض المهارات لإكماله.
هذه هي الطريقة التي تعمل بها جافا
انسخ رمز الكود كما يلي:
حزمة باو1؛
شخص الصف {
اسم سلسلة خاصة؛
شخص (اسم السلسلة) {
this.name = name;
}
طريقة الفراغ العام 1 () {
System.out.println(this.name);
}
}
رجل الطبقة يمتد الشخص {
رجل (اسم السلسلة) {
سوبر (الاسم)؛
}
الفراغ العام m1() {
super.method1();
}
}
اختبار الطبقة العامة {
public static void main(String[] args) {
رجل man1 = رجل جديد("جاك");
man1.m1();
}
}