2016-10-19 3 views
2

У меня небольшая проблема с методом valueOf() объекта. У меня есть массив с объектами и объектными литералами. Скажите, что это var Books = [ {"name": "SomeBook"}, {"name": "SomeOtherBook"} ]. Теперь я хочу, чтобы написать все литералы в некоторых текстовых входы с помощьюПочему мой метод valueOf() не возвращает значение?

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++; 
} 

Почему мой выход имени объекта? Когда я де-комментирую журнал(), я также получаю «имя» вместо «SomeBook». Тем не менее, если я использую

editInputs[0].value = book.name; 

Он вставляет SomeBook.

Почему? Я не хочу писать все поля в одной строке ...

Спасибо заранее!

+3

Вы буквально просите 'book [property]'? – Brian

ответ

1

property является строка, содержащая имя свойства.

valueOf дает элементарное значение той, которая до сих пор строка, содержащая имя свойства.

Если вы хотите использовать эту строку, чтобы получить значение имени свойства, которое соответствует строке, хранящейся в property вам нужно использовать:

book[property] 
+0

Хм, спасибо, ты абсолютно прав. Итак, цикл for не передает всю собственность? Но почему? Могу ли я заставить это сделать это? –

+0

@Silver_Bear - Потому что это точка 'in'. Используйте ['of'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of), если вы хотите это значение. – Quentin

1

переменные в цикле for это просто строка. valueOf() просто возвращает примитивное значение объекта, но для строки вы просто возвращаете строку.

Вы должны сделать book[property] вместо этого. На самом деле нет лучшего способа сделать это.

1

Вместо

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

вы должны использовать

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

Если property это свойство вашего book объекта, вам просто нужно позвонить:

book[property] 

Чтобы получить его значение, потому что .valueOf() возвращает примитивное значение указанного объекта, как вы можете видеть в документации.

Смежные вопросы