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.

  • 相关阅读:
    Enum.GetUnderlyingType(obj.GetType())
    Out,ref,params修饰符,可选参数,命名参数
    Linq
    var
    checked,unchecked
    StringBuilder.sb.AppendLine();
    js改变css样式的三种方法
    flex的用途
    clip-path
    json 对象 数组
  • 原文地址:https://www.cnblogs.com/sanshi/p/1454065.html
Copyright © 2011-2022 走看看