JS:class.prototype.constructor和class.constructor之间有区别吗?

时间:2016-06-02 08:40:54

标签: javascript constructor prototype

在我正在阅读的教程中,有一部分我不明白:

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;
    }
}

我已经阅读了帖子并检查了网页,但我真的不明白,说:User.constructor和User.prototype.constructor之间有区别吗? (就像第9行一样)

2 个答案:

答案 0 :(得分:1)

User.constructor设置User实例的构造函数。 User.prototype.constructor设置所有实例的构造函数。因此,如果你设置

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

然后

new User().constructor

也将是test函数。

答案 1 :(得分:1)

当你做的时候

user.prototype={},

您实际上是在创建新对象。所以它将是

user.prototype=new Object()

并且它的构造函数将更改为Object,因此要将构造函数保留为用户对象

 constructor: User

和构造函数是原型的属性。要从类用户调用构造函数,您需要创建类用户的新实例,然后才能直接使用构造函数属性