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.

  • 相关阅读:
    tomcat的安装及配置
    java动态代理的实现
    mySql单列索引与联合索引的区别
    maven3.5.0在win10中的安装及环境变量配置
    jQuery相关知识总结
    前端-css
    前段篇:HTML
    Mysql基础安装,初视篇
    论事件驱动与异步IO
    python 之协程
  • 原文地址:https://www.cnblogs.com/sanshi/p/1454065.html
Copyright © 2011-2022 走看看