我对一个对象的valueOf()方法有点问题。
我有一个包含对象和对象文字的数组。
说它是var Books = [ {"name": "SomeBook"}, {"name": "SomeOtherBook"} ]
。
现在我想通过
var i = 0;
book = Books[0];
for (var property in book) {
if (book.hasOwnProperty(property)) {
editInputs[i].value = property.valueOf();
//console.log(property.valueOf());
}
i++;
}
为什么我的输出是对象的名字?当我取消注释log()时,我也得到“name”而不是SomeBook。但是,如果我使用
editInputs[0].value = book.name;
它会插入SomeBook
。
为什么呢?我不想在一行中写下每个字段......
提前致谢!
答案 0 :(得分:1)
property
是一个包含属性名称的字符串。
valueOf
为你提供了原始值,它仍然是一个包含属性名称的字符串。
如果要使用该字符串获取与property
中存储的字符串匹配的属性名称的值,则需要使用:
book[property]
答案 1 :(得分:1)
for
循环中的变量只是一个字符串。 valueOf()
只返回对象的原始值,但对于字符串,只需返回字符串。
您必须改为book[property]
。实际上并没有更好的方法。
答案 2 :(得分:1)
而不是
editInputs[i].value = property.valueOf();
你应该使用
editInputs[i].value = book[property];
答案 3 :(得分:1)