为什么我的valueOf()方法没有返回值?

时间:2016-10-19 15:01:43

标签: 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.valueOf();
        //console.log(property.valueOf());
    }
    i++;
}

为什么我的输出是对象的名字?当我取消注释log()时,我也得到“name”而不是SomeBook。但是,如果我使用

editInputs[0].value = book.name;

它会插入SomeBook

为什么呢?我不想在一行中写下每个字段......

提前致谢!

4 个答案:

答案 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)

如果propertybook对象的属性,则只需致电:

book[property]

要获取其值,因为 .valueOf() 会返回指定对象的原始值,您可以在文档中看到它。