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.

  • 相关阅读:
    实现一个简单的ConnectionPool
    并发连接MySQL
    C#里面滥用String造成的性能问题
    String.IndexOf
    C#代码中插入X86汇编
    正确理解Handle对象
    orleans发送广播消息
    log日志方法
    PHP 批量插入数据
    逻辑漏洞小结之SRC篇
  • 原文地址:https://www.cnblogs.com/sanshi/p/1454065.html
Copyright © 2011-2022 走看看