Ich möchte den Unterschied kennen zwischen:Was ist der Unterschied zwischen childObj.prototype = Object.create (parentObj.prototype) und childObj.prototype = parentObj.prototype?
childObj.prototype = Object.create(parentObj.prototype)
und
childObj.prototype = parentObj.prototype;
Da beide Ich brauche den Eltern Konstruktor innerhalb des Kindes Objekt aufzurufen Zugang zu den Konstruktor Eigenschaften zu haben.
Ich weiß, wie Object.create Funktion funktioniert, und ich stelle fest, dass der Unterschied nur besteht, weil es ein neues Objekt mit der mit dem Prototyp der Eltern zurückgibt. Ich denke, was ich nicht verstehe, ist der Effekt der Rückgabe eines neuen Objekts mit dem Prototyp des Elternteils.
Die erste erstellt eine Prototyp-Kette, wo Sie child.prototype nach ändern können und es nicht die Eltern beeinflussen. Die zweite ist buchstäblich Aliasing der beiden, um auf die gleiche Datenstruktur zu zeigen, und Modifikationen durch entweder ändern diese einzelne Datenstruktur, beide betroffen. Sie wollen die erste, obwohl Sie normalerweise 'ChildObj.prototype = new ParentObj()' anstelle von Object.create benötigen –
* obwohl Sie normalerweise wollen ChildObj.prototype = new ParentObj() '* Wahrscheinlich nicht, da dies die' ruft ParentObj' Konstruktor beim Zuweisen der '.prototype' zu seinem Kind, NICHT wenn eine neue Instanz erstellt wird. – nils