Javascript 用户[年龄]的情况;“未定义”;(错误)此处,而用户[名称]已定义?

Javascript 用户[年龄]的情况;“未定义”;(错误)此处,而用户[名称]已定义?,javascript,Javascript,功能用户(姓名、年龄){ this.name=名称; 这个。年龄=年龄; } var用户=新用户('Daniel',45); document.write(user[name]+'+'是'+''+用户[age]+''+'岁!')user[name]不会抛出错误,因为它引用的是。但是,窗口中没有age属性。所以,你得到了错误 要使用用户对象,需要使用点符号或括号符号(带引号): 以下是更新的代码片段: 功能用户(姓名、年龄){ this.name=名称; 这个。年龄=年龄; } var用户=新用

功能用户(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
var用户=新用户('Daniel',45);

document.write(user[name]+'+'是'+''+用户[age]+''+'岁!')
user[name]
不会抛出错误,因为它引用的是。但是,
窗口中没有
age
属性。所以,你得到了错误

要使用
用户
对象,需要使用点符号或括号符号(带引号):

以下是更新的代码片段:

功能用户(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
var用户=新用户('Daniel',45);

write(user[“name”]+''+'是'+''+用户[“age”]+''岁!')您错过了字符串引号

功能用户(姓名、年龄){
this.name=name;
这个。年龄=年龄;
}
var用户=新用户('Daniel',45);

write(用户['name']+'+'是'+''+用户['age']+''岁!')原因是您需要以字符串形式访问属性。如果你那样尝试访问它,它将不起作用

user[age]
未定义,而
user['age']
将返回与该属性关联的元素。这称为括号表示法

请注意,当您使用
符号访问属性时,您不会使用字符串。您只需使用
obj.propertyName


在某些情况下,您没有选择权,必须使用第一种方法。例如,如果属性名称中有空格,则括号表示法是唯一有效的方法。请参见类似于
obj的内容。由于存在空格,property name
将无法访问所需的属性。在这里,您必须使用“obj['property name']”

在您的问题中有两件事需要解决

  • 您将用户的属性用作变量,而应将它们用作字符串

    write(用户['name']+'+'是'+''+用户['age']+''岁!')

  • 其次,它不会在为name而为age时抛出错误,因为该窗口已经有一个属性/变量名,其值为“”。请在浏览器控制台上尝试下面的操作

    window.name


  • 我想你的意思是
    user['name']
    user['age']
    user.name是javascript中的idomatic方式,应该优先使用。请不要重复其他答案已经提到的内容
    user.name
    user["name"]