javascript – 我应该在js中声明原型中的构造函数吗?

<script>
function User (theName, theEmail) {
    this.name = theName;
    this.email = theEmail;
}

User.prototype = {
    constructor: User,
    changeEmail:function (newEmail)  {
        this.email = newEmail;
        return "New Email Saved: " + this.email;
    }
}
// A User 
firstUser = new User("Richard", "Richard@examnple.com"); 
firstUser.changeEmail("RichardB@examnple.com");
</script>

这段代码取自这里:http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/

题:

是nessecerry放这一行:构造函数:用户,?如果我删除了这一行,它仍然可以工作.

最佳答案 当我们使用new运算符或{}在javascript中创建新对象时,新创建的对象的构造函数属性指向构造函数.在你的情况下:

firstUser = new User("Richard", "Richard@examnple.com"); 

firstUser.constructor是User.
 您的User.prototype也是如此.当您使用{}为User.prototype创建新对象时,构造函数属性为Object.当您放置构造函数:User时,您只需将构造函数属性从Object更改为User,您的代码仍可正常工作.

点赞