Каждая функция имеет атрибут прототипа, называемый прототипом. У каждого объекта также есть прототип, доступ к которому можно получить через __proto__ в Firefox/Safari/Chrome/Opera. В IE6/7/8 соответствующий интерфейс отсутствует.
Скопируйте код кода следующим образом:
функция Человек(){
this.method1 = функция(){}
}
Person.prototype.method2 = функция(){}
функция Человек(){}
Man.prototype = новый человек();
Man.prototype.m1 = функция(){}
Man.prototype.m2 = функция(){}
вар м = новый Человек ();
for(var a в m.__proto__){
предупреждение(а);
}
Определены родительский класс Person и подкласс Man. создайте объект Man и распечатайте все свойства.
ECMAScript V5 добавляет статический метод getPrototypeOf к Object (реализованный Firefox/Chrome) для получения прототипа объекта. Его можно использовать для имитации Java super.
Скопируйте код кода следующим образом:
функция Человек(){
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();
}
вар человек = новый человек ();
человек.m1();
человек.м2();
Метод m1, привязанный к этому в подклассе Man, вызывает метод1, привязанный к этому в родительском классе Person, а метод m2, привязанный к прототипу, вызывает метод2 в прототипе родительского класса.
Из вышесказанного видно, что прототип объекта не только включает атрибуты своего прототипа конструктора, но также включает атрибуты this в конструктор. Конечно, из-за контекстных причин в JavaScript это в родительском классе не может быть автоматически преобразовано в подкласс, и для этого требуются некоторые навыки.
Вот как это работает в Java
Скопируйте код кода следующим образом:
пакет бао1;
класс Человек {
частное имя строки;
Человек (строковое имя) {
это.имя = имя;
}
публичный недействительный метод1() {
System.out.println(this.name);
}
}
класс Man расширяет Person{
Человек (имя строки) {
супер(имя);
}
общественная недействительность m1() {
супер.метод1();
}
}
тест публичного класса {
public static void main(String[] args) {
Мужчина man1 = новый Человек("Джек");
человек1.m1();
}
}