Cada função possui um atributo de protótipo, denominado protótipo. Cada objeto também possui um protótipo, que pode ser acessado através de __proto__ no Firefox/Safari/Chrome/Opera. Não há interface relevante fornecida no IE6/7/8.
Copie o código do código da seguinte forma:
função Pessoa(){
este.método1 = função(){}
}
Pessoa.prototype.method2 = função(){}
função Homem(){}
Man.prototype = new Pessoa();
Man.prototype.m1 = função(){}
Man.prototype.m2 = função(){}
var m = novo Homem();
para(var a em m.__proto__){
alerta(a);
}
A classe pai Person e a subclasse Man são definidas. new um objeto Man e imprima todas as propriedades.
ECMAScript V5 adiciona um método getPrototypeOf estático ao Object (implementado pelo Firefox/Chrome) para obter o protótipo do objeto. Pode ser usado para imitar o super.
Copie o código do código da seguinte forma:
função Pessoa(){
this.method1 = function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
função Homem(){
isto.m1 = função(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person(); // Herança do protótipo
Man.prototype.m2 = função(){
Object.getPrototypeOf(this).method2();
}
var homem = novo Homem();
man.m1();
man.m2();
O método m1 pendurado nisso na subclasse Man chama o método1 pendurado nisso na classe pai Person, e o método m2 pendurado no protótipo chama o método2 no protótipo da classe pai.
Pode-se ver acima que o protótipo do objeto não inclui apenas os atributos em seu protótipo construtor, mas também inclui os atributos deste no construtor. É claro que, devido a razões de contexto em JavaScript, isso na classe pai não pode ser convertido automaticamente na subclasse e algumas habilidades são necessárias para concluí-lo.
É assim que funciona em Java
Copie o código do código da seguinte forma:
pacote bao1;
classe Pessoa {
nome da string privada;
Pessoa(Nome da string) {
este.nome = nome;
}
método vazio público1() {
System.out.println(este.nome);
}
}
classe Homem estende Pessoa{
Homem(Nome da string) {
super(nome);
}
público vazio m1() {
super.método1();
}
}
teste de classe pública {
public static void main(String[] args) {
Homem homem1 = novo Homem("Jack");
man1.m1();
}
}