<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. Оба должны давать одинаковые ошибки? Пожалуйста, уточните мои сомнения здесь.
Потому что вы обращаетесь к ним неправильно. user[name]
не является правильным синтаксисом для доступа к объекту.
Должно быть:
user['name']
или даже проще:
user.name
Дальнейшее чтение о доступе к объектам свойств:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors
Существует свойство объекта window с именем name
.
Что это такое или я понятия не имею. [EDIT] имя окна используется в основном для установки целей для гиперссылок и форм.
Поэтому, поскольку он определен, вы не получаете ошибку "Не определено", как вы попадаете в строку 2. user[name]
эквивалентен user[window.name]
, который является user['']
, так как имя окна не было установлено.
Вы должны указать имя и возраст как строку. он должен быть как этот 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>