ich gelesen, dass, wenn ein Objekt wörtliche definiert ist, wird der Object-Konstruktor nicht aufgerufen:Warum der `Konstruktor` im folgenden auf Objekt verweist?
var ob1 = new Object(); // constructor called
var ob2 = {}; // constructor never called
Betrachten wir nun die folgenden:
// a constructor
function Animal (name, food) {
// definition of constructor
}
Animal.prototype = {
// some properties in the prototype
// but `constructor` is not set back to Animal
}
In dem obigen Code, weil ich völlig den Prototyp zu überschreiben bin Die constructot
wird auf Object
eingestellt. Wenn ich nicht falsch liege, wird die Konstruktoreigenschaft so eingestellt, dass sie auf den Konstruktor zeigt, der, wenn aufgerufen wird, bewirkt, dass der Prototyp erstellt wird. Meine Frage ist, obwohl ich den Prototyp vollständig neu definiere, wird der Objektkonstruktor nicht aufgerufen (weil es nur ein Objektliteral ist). Dann wieso die constructor
auf Objekt zeigt.
Die Eigenschaft 'constructor' wird normalerweise nicht vom Konstruktor selbst festgelegt. Es ist vorrausgesetzt, dass der Prototyp alle Instanzen erben soll. Wenn Sie auf 'new Animal(). Constructor' zugreifen, erhalten Sie den Wert von 'Object.prototype.constructor'. –
@ Jonathan Lonowski bitte schreiben Sie eine Antwort und erarbeiten. –
Wollen Sie sagen, dass die Konstruktoreigenschaft von Object.prototype geerbt wird? –