繁体   English   中英

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

[英]Why does my valueOf() method not return the value?

我在使用对象的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()时,我也会得到“名称”而不是SomeBook。 但是,如果我使用

editInputs[0].value = book.name;

它插入SomeBook

为什么? 我不想将所有字段都写在一行中...

提前致谢!

property是一个包含属性名称的字符串。

valueOf为您提供该值的原始值,该值仍然是包含属性名称的字符串。

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

book[property]

for循环中的变量只是一个字符串。 valueOf()仅返回对象的原始值,但是对于字符串,只需将字符串取回即可。

您必须改为book[property] 确实没有更好的方法。

代替

editInputs[i].value = property.valueOf(); 

你应该使用

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

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

book[property]

为了获得其值,因为.valueOf()返回指定对象的原始值,如您在文档中所见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM