Доступ к атрибутам объекта

1
<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>

В вышеприведенном коде, когда я попытался получить доступ к свойствам объекта user Для имени я получил "undefined" в качестве вывода. Для возраста я получил сообщение об ошибке, указывающее, что возраст не определен. Невозможно понять, почему я получаю сообщение об ошибке для строки 2 и "undefined 'для строки 1. Оба должны давать одинаковые ошибки? Пожалуйста, уточните мои сомнения здесь.

Теги:

3 ответа

1

Потому что вы обращаетесь к ним неправильно. user[name] не является правильным синтаксисом для доступа к объекту.

Должно быть:

user['name']

или даже проще:

user.name

Дальнейшее чтение о доступе к объектам свойств:

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

0

Существует свойство объекта window с именем name.
Что это такое или я понятия не имею. [EDIT] имя окна используется в основном для установки целей для гиперссылок и форм.
Поэтому, поскольку он определен, вы не получаете ошибку "Не определено", как вы попадаете в строку 2.
user[name] эквивалентен user[window.name], который является user[''], так как имя окна не было установлено.

  • 0
    Спасибо за ответ
0

Вы должны указать имя и возраст как строку. он должен быть как этот user['name']

<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>

ИЛИ просто используйте. обозначение

<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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню