访问对象属性

时间:2017-07-05 11:53:51

标签: javascript

<html>
  <head>
    <script>
      function User(name,age){
        this.name=name;
        this.age=age;
      }
      var user = new User('Daniel', 45 );
      document.write(user[name]+' '+'is'+' '); //line 1
      document.write(user[age]+' '+'years old!'); // line 2
    </script>
  </head>
  <body>

  </body>
</html>

在上面的代码中,               当我尝试访问对象用户的属性时               对于名字,我得到'未定义'作为输出               对于年龄,我得到错误说年龄没有定义          无法理解我为什么会遇到第2行的错误          第1行的“未定义”值。两者都应该给出相同的错误吗?     请在此澄清我的疑问。

3 个答案:

答案 0 :(得分:1)

因为你错误地访问了它们。 user[name]不是访问对象属性的正确语法。

应该是:

user['name']

甚至更简单:

user.name

进一步阅读有关访问对象属性的信息:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors

答案 1 :(得分:0)

您应该将名称和年龄指定为字符串。它应该像这样user['name']

&#13;
&#13;
<html>
            <head>
                <script>
                    function User(name,age){
                        this.name=name;
                        this.age=age;
                    }
                    var user = new User('Daniel', 45 );
                    document.write(user["name"]+' '+'is'+' '); //line 1
                    document.write(user["age"]+' '+'years old!'); // line 2
                </script>
            </head>
            <body>

            </body>
        </html>
&#13;
&#13;
&#13;

或者只是使用。符号

&#13;
&#13;
<html>
            <head>
                <script>
                    function User(name,age){
                        this.name=name;
                        this.age=age;
                    }
                    var user = new User('Daniel', 45 );
                    document.write(user.name+' '+'is'+' '); //line 1
                    document.write(user.age+' '+'years old!'); // line 2
                </script>
            </head>
            <body>

            </body>
        </html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

窗口对象的属性名为name 它是什么或我不知道。 [编辑] the name of the window is used primarily for setting targets for hyperlinks and forms.
所以既然它定义了你在第2行中没有得到未定义的错误。
user[name]相当于user[window.name],即user[''],因为窗口名称未设置。