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.

相关文章:

  • 2021-12-22
  • 2021-05-16
猜你喜欢
  • 2021-08-15
  • 2021-09-13
  • 2021-10-13
  • 2021-07-10
相关资源
相似解决方案