继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Confused with JavaScript prototype

慕田峪0738999
关注TA
已关注
手记 344
粉丝 88
获赞 493

They are two similar code below:

1.
<code>
function User(name) {
this.name = name;
}
User.prototype = { 'sex': 'man' };
var user = new User('Zhang');
alert(User.prototype['sex']);   // man
alert(user.constructor.prototype['sex']);   // undefined
alert(user.constructor.prototype.constructor === Object);   // true</code>
2.
<code>
function User(name) {
this.name = name;
}
User.prototype.sex = 'man';
var user = new User('Zhang');
alert(User.prototype['sex']);   // man
alert(user.constructor.prototype['sex']);   // man
alert(user.constructor.prototype.constructor === User);   // true</code>
My problem:

I'm wondering why the first piece code  "user.constructor.prototype['sex']" return "undefined", I think it would be "man".

Can somebody tell me?

--

Thanks for your comment Sky.

In the first implement, User.prototype.constructor is modified to Object, not User itself. Therefore user.constructor is equal to User.prototype.constructor, they are all Object.We can solve this problem by simply apply this code to User.prototype: User.prototype.constructor = User.

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP