Javascript 为什么我的valueOf()方法不返回该值?

Javascript 为什么我的valueOf()方法不返回该值?,javascript,dom,Javascript,Dom,我对对象的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.va

我对对象的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

为什么??我不想把每个字段都写在一行中


提前谢谢

属性
是包含属性名称的字符串

valueOf
提供该属性的基本值,它仍然是一个包含属性名称的字符串

如果要使用该字符串获取与存储在
property
中的字符串匹配的属性名称值,则需要使用:

book[property]

for
循环中的变量只是一个字符串
valueOf()
只返回对象的原语值,但对于字符串,只返回字符串

您必须执行
book[property]
操作。没有比这更好的方法了。

而不是

editInputs[i].value = property.valueOf(); 
你应该使用

editInputs[i].value = book[property];

如果
property
book
对象的属性,则只需调用:

book[property]

获取它的值,因为返回指定对象的基本值,正如您在文档中看到的那样。

您真的要求
book[property]
?嗯,谢谢,您完全正确。所以for循环不传递整个属性?但是为什么呢?我能让它这样做吗?@Silver\u Bear-因为这就是中的
的要点。如果需要该值,请使用。