我有两个运行良好的代码,但是我不明白为什么在其中一个代码中需要使用方括号,而在另一个代码中却不需要。代码取自FreeCodeCamp教程。
第一个代码:
let users = {
Alan: {
age: 27,
online: false
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: false
},
Ryan: {
age: 19,
online: true
}
};
function countOnline(obj) {
var numbUsers = 0;
for (let user in obj){
if (obj[user].online){
numbUsers++;
}
}
return numbUsers;
}
console.log(countOnline(users));
在这里,我们需要在[用户]上使用方括号,如果您使用点号,它将无法使用。据我了解,用户不是变量(变量是可以通过点访问的变量),因为它是一个对象,因此我们需要使用方括号。
第二个代码:
let user = {
name: 'Kenneth',
age: 28,
data: {
username: 'kennethCodesAllDay',
joinDate: 'March 26, 2016',
organization: 'freeCodeCamp',
friends: [
'Sam',
'Kira',
'Tomo'
],
location: {
city: 'San Francisco',
state: 'CA',
country: 'USA'
}
}
};
function addFriend(userObj, friend) {
userObj.data.friends.push(friend);
return userObj.data.friends;
}
console.log(addFriend(user, 'Pete'));
在这段代码中,正如我所看到的,对象内部有一个对象,并且只能通过点对其进行访问,并且效果很好……为什么?为什么在第一个代码中我无法做到这一点?
我需要了解它是如何工作的,否则我将无法在Javascript上正确编写代码。
在此星期五晚上,谢谢所有愿意提供帮助的人。
:D