Javascript中的空对象
我有一个奇怪的情况 我从表单中获取一些值并将其保存在对象中 我打印出这些值,它会很好地打印到控制台日志中。但当我尝试访问它或在下一行再次打印时。它返回为空 这是代码Javascript中的空对象,javascript,object,Javascript,Object,我有一个奇怪的情况 我从表单中获取一些值并将其保存在对象中 我打印出这些值,它会很好地打印到控制台日志中。但当我尝试访问它或在下一行再次打印时。它返回为空 这是代码 var family = {}; var counter = []; counter = document.querySelectorAll(".familyMemberBox input[name='member[]']"); for(x=0;x<counter.length;x++){
var family = {};
var counter = [];
counter = document.querySelectorAll(".familyMemberBox input[name='member[]']");
for(x=0;x<counter.length;x++){
console.log('for loop');
family[x] = {};
member_number = counter[x].value;
member_type = get_member_type(member_number);
gender = get_gender(member_number);
age = get_age(member_number);
family[x]['type'] = member_type;
family[x]['Gender'] = gender;
family[x]['Age'] = age;
}
for(x=0;x<counter.length;x++){
console.log(family[x]);
}
console.log('family: '+family[0]);
var-family={};
var计数器=[];
计数器=document.querySelectorAll(“.familyMemberBox输入[name='member[]']”);
对于(x=0;x这一行:console.log('family:'+family[0]);
在打印前将family[0]
强制为字符串。这并不意味着对象为空
请尝试以下方法:
console.log('family: ');
console.log(family[0]);
您使用以下语句将其设置为字符串:console.log('family:'+family[0]);
当使用普通对象压缩字符串时,您隐式调用的是.toString()
。对象的字符串版本是[object object]
。它不是空的,不用担心
如果要显示对象的字符串版本,可能需要循环并打印每个键和值对,但这可能效率不高。如果您一心想将系列
打印到控制台,请使用逗号:
console.log('family: ', family[0]); // should show two individual statements, not just one coerced string
console.log(family[x]);
正在记录对象。console.log('family:'+family[0]);
正在记录对象的字符串表示形式,即(除非覆盖它)“[object object]”它只是控制台格式。请尝试:console.log('family:');console.log(family[0])
那不是空对象,只是对象的字符串。请尝试控制台.log(“家族”,家族[0])
而不是控制台.log('family:',家族[0]);
而不是控制台.log('family:'+family[0])
这一条可能会解释:哇,似乎是新手犯的错误。谢谢你的详细回答。我将在循环中使用它。这只是为了测试我是否正确地读取了值。