2016-06-02 10 views
0

In einem Tutorial lese ich bin, es ist ein Teil verstehe ich nicht:JS: Gibt es einen Unterschied zwischen class.prototype.constructor und class.constructor

function User (theName, theEmail) { 
    this.name = theName; 
    this.email = theEmail; 
    this.quizScores = []; 
    this.currentScore = 0; 
} 
​ 
User.prototype = { 
    constructor: User, 
    saveScore:function (theScoreToAdd) { 
     this.quizScores.push(theScoreToAdd) 
    }, 
    showNameAndScores:function() { 
     var scores = this.quizScores.length > 0 ? this.quizScores.join(",") : "No Scores Yet"; 
     return this.name + " Scores: " + scores; 
    }, 
    changeEmail:function (newEmail) { 
     this.email = newEmail; 
     return "New Email Saved: " + this.email; 
    } 
} 

ich die Post gelesen und geprüft das Web, aber ich verstehe nicht wirklich, gibt es einen Unterschied zwischen sagen: User.constructor und User.prototype.constructor? (Wie in Zeile 9)

Antwort

1

Die User.constructor setzt den Konstruktor der User Instanz. Die User.prototype.constructor setzt den Konstruktor alle Instanzen. Wenn Sie also gesetzt

User.prototype.constructor = function test(){}; 

dann

new User().constructor 

wird auch sein, die test Funktion. Sie erstellen tatsächlich neues Objekt

1

Wenn Sie

user.prototype={}, 

tun. So wird es

user.prototype=new Object() 

sein und der Konstruktor wird Objekt ändern, so zu halten Konstruktor Benutzerobjekt

constructor: User 

und Konstruktor ist Eigentum des Prototyps. Um den Konstruktor vom Klassenbenutzer aufzurufen, müssen Sie eine neue Instanz des Klassenbenutzers erstellen, und nur Sie können die Konstruktoreigenschaft direkt verwenden

Verwandte Themen