Почему вы не можете получить доступ к объекту с помощью точечной нотации внутри цикла?Методы вызова объектов внутри цикла
var rockSpearguns = {
Sharpshooter: {barbs: 2, weight: 10, heft: "overhand"},
Pokepistol: {barbs: 4, weight: 8, heft: "shoulder"}
};
function listGuns(guns) {
for (var gun in guns) {
console.log("Behold! " + gun + ", with " + gun.heft + " heft!");
}
}
listGuns(rockSpearguns);
Это производит этот выход:
: вот! Стрелок, с неопределенным весом!
Вот! Покепистол, с неопределенным весом!
Но, если я меняю gun.heft
на guns[gun].heft
, я получаю правильный выход.
Вот! Стрелок, с перевернутым ударом!
Вот! Покепистол, с плечом!
Кажется, что я могу получить имя пушки внутри цикла, но я не могу вызова метода на нем, чтобы получить поднимание. Зачем?
В, скажем Руби, внутри цикла, текущий элемент в индексе обычно является объектом. Нет, так здесь?
Вы пытаетесь получить свойство строки, а не объект, к которому он привязан. – Barmar
И ответ: прочитайте руководство по фригину. Так работает JavaScript. –
Проверьте этот вопрос для получения информации о правильном способе получения цикла for-each в js: http://stackoverflow.com/questions/9329446/for-each-in-an-array-how-to-do-that -in-javascript – vbo