zoukankan      html  css  js  c++  java
  • Confused with JavaScript prototype

    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.

  • 相关阅读:
    扯一扯纯函数
    10.28
    10.27 动手动脑5
    10.26
    10.25 周总结
    10.23
    10.22
    10.21 动手动脑4
    10.20
    10.19
  • 原文地址:https://www.cnblogs.com/sanshi/p/1454065.html
Copyright © 2011-2022 走看看