2016-05-08 5 views
0

Zum Beispiel haben wir bereits 3 "Klassen" (Funktionen): Obst < = Apple < = GreenApple. So erben Apple von Fruit und GreenApple von Apple. (Verwenden von Prototypen für Instanzen). Also wenn ich richtig verstehe: "fruit.prototype" ist ein Objekt, "apple.prototype" ist ein Obst und "greenApple.prototype" ist ein "Apple"? So , dies zu berücksichtigen, habe ich folgende Frage:Was bedeutet "Methode zum Prototyp hinzufügen"

was bedeutet "Apple.prototype" in "Apple.prototype.getInfo" ???:

function Apple (type) { 
    this.type = type; 
    this.color = "red"; 
} 

Apple.prototype.getInfo = function() { 
    return this.color + ' ' + this.type + ' apple'; 
}; 

Auch für mich, die Apple-Prototyp ist eine Frucht (Apple.prototype == Fruit), aber im obigen Code sehen wir, dass es einen anderen Weg verwendet, was ist also Apple.prototype hier ??? Wenn wir neue Instanz von Apple bekommen.

var greenApple = new GreenApple('apple1'); 

und wenn es keine getInfo Methode in Greenapple-Klasse ist, wird es bei greenApple.prototype (Apple) aussehen, aber getInfo erklärte in Apple.prototype (was ist es) ??

Endlich: Was für einen Unterschied zwischen:

Apple.prototype.getInfo = function(){*_*} 

und

Apple.getInfo = function() {*_*} 

Antwort

2

Apples Prototyp ist eine Frucht (Apple.prototype == Obst)

No. " Apples Prototyp ist a Frucht“bedeutet nicht "Prototyp des Apple Fruit"

Ersteres bedeutet, bedeutet

Apple.prototype instanceof Fruit 

Letzteres bedeutet

Apple.prototype === Fruit 
+0

ja, gibt es nur Fehler Syntaxis, aber auch hier: Wenn Wir bekommen eine neue Instanz von Apple. var greenApple = neu GreenApple ('apple1'); welche Klasse erbt von Apple-Klasse und wenn es keine "getInfo" -Methode in GreenApple-Klasse gibt, wird es greenApple.prototype (Apple) sehen, aber GetInfo in ** Apple.prototype ** deklariert (was ist das) ?? –

+0

Nein. 'GreenApple.prototype' ist eine Instanz von' Apple', nicht 'Apple' selbst. Es ist also nur ein Objekt, möglicherweise mit einigen Methoden oder Eigenschaften, die von "Apple.prototype" erbt. – Oriol

+0

aber wie kann es von "Apple.prototype" erben, während "Apple.prototype === Fruit"? Ich dachte, es würde direkt von 'Apple' geerbt. Da liegt meine Frage: Was genau ist "Apple.prototype"? Ist es 'Fruit' oder etwas anderes? ** –