Dies passiert, weil der Prototyp der Car
es die Person
Funktion verwendet. Also, wenn ein Schlüssel nicht auf der mercedes
JavaScript-Engine gefunden wird, was die Prototyp-Kette nachschlagen.
Sie können auf das Prototypobjekt als mercedes.__proto__
zugreifen, um dies zu überprüfen. Überprüfen Sie das folgende Snippet.
function Person(firstName) {
"use strict";
this.firstName = firstName;
this.fullName = "ABC";
this.greeting = function (name) {
console.log("Hi " + name);
};
}
Person.prototype.hello = function() {
"use strict";
console.log("Hello");
};
function Car(model, year) {
"use strict";
this.model = model;
this.year = year;
}
Car.prototype = new Person();
var mercedes = new Car("CS300", 2017);
console.log(mercedes.__proto__);
Generell, wenn das JavaScript-Engine Sie am proto des Objekts suchen den Schlüssel nicht finden, dann geht es in den Proto des Proto nach oben, um um dort den Schlüssel zu finden. Dies geschieht, bis wir entweder den Schlüssel gefunden haben oder die Null erreicht haben (das Ende jeder Prototypkette). Wenn wir null
erreichen, erhalten wir die Nachricht, dass der Schlüssel, nach dem wir suchen, undefined
ist, da er nirgendwo in der Prototypkette gefunden wurde. Betrachten wir zum Beispiel den Wert des Schlüssels foo
für Mercedes.
function Person(firstName) {
"use strict";
this.firstName = firstName;
this.fullName = "ABC";
this.greeting = function (name) {
console.log("Hi " + name);
};
}
Person.prototype.hello = function() {
"use strict";
console.log("Hello");
};
function Car(model, year) {
"use strict";
this.model = model;
this.year = year;
}
Car.prototype = new Person();
var mercedes = new Car("CS300", 2017);
console.log(mercedes.foo);
Wie Sie jetzt bemerken undefined
auf der Konsole gedruckt wird.
Dies wird prototypal inheritance genannt und es ist der Mechanismus, durch den Vererbung in JavaScript implementiert wird.
Jetzt verstehen, danke – Sarmad
@Sarmad Sie sind herzlich willkommen! Ich bin froh, dass ich geholfen habe. – Christos