2016-04-15 3 views
0

Ich habe auf prototypische Vererbung in JavaScript aufgepäppelt und ich habe eine wichtige Frage zu seiner Notwendigkeit. Ich kann die Gründe nicht verstehen, warum das sehr wichtig ist.Ist eine prototypische Vererbung in JavaScript erforderlich, damit neue Eigenschaften, die wir hinzufügen, dynamisch propagiert werden können?

function Employee() { 
 
    this.name = "geetha"; 
 
    this.dept = "general"; 
 
} 
 
Employee.prototype.designation = "nothing"; 
 

 
function Manager() { 
 
    Employee.call(this); 
 
    this.title = "mr"; 
 
} 
 
Manager.prototype = Object.create(Employee.prototype); 
 

 
var mark = new Manager; 
 

 
console.log(mark.name); 
 
console.log(mark.dept); 
 
console.log(mark.title); 
 
console.log(mark.designation);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

In dem obigen Code-Schnipsel, wenn ich

Manager.prototype = Object.create(Employee.prototype);

ich es entfernen kann nur sehen: Ich habe die Grundcodeausschnitt unten läuft hindert mich daran, für den "Employee" -Konstruktor eine neue Eigenschaft hinzuzufügen, so dass sie das macht rieselt zu den Objekten, von denen es ein Prototyp ist. Ansonsten, wenn ich mit den bereits definierten Eigenschaften zufrieden bin, muss ich "Employee" nicht wirklich zum Prototyp von "Manager" machen. Der Konstruktoraufruf von Employee von Inside Manager würde das Abrufen seiner Eigenschaften erreichen. Fehle ich etwas wirklich wichtiges in diesem Konzept?

Danke!

+0

Ihr Verständnis ist in Ordnung. Ich schlage vor, Sie lesen dieses Thema auf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain für mehr Klarheit –

Antwort

0

Wenn Sie nicht über die Linie verwenden

Manager.prototype = Object.create(Employee.prototype); 

dann sind Sie nicht eigentlich Vererbung. Sie verwenden einfach den Employee-Konstruktor, um die Variablen in der Manager-Instanz genauso zu initialisieren, wie sie in einer Employee-Instanz initialisiert würden.

Das, was zu beachten ist, diese Linie

Employee.prototype.designation = "nothing"; 

Wenn Sie die Vererbung nicht verwenden dann die Eigenschaft designation wird Manager-Instanzen nicht verfügbar, da es nicht in der Prototypkette sein wird.

Verwandte Themen