Скажем, у вас есть такой объект javascript:
var data = { foo: 'bar', baz: 'quux' };
Вы можете получить доступ к свойствам по имени свойства:
var foo = data.foo;
var baz = data["baz"];
Но возможно ли получить эти значения, если вы не знаете названия свойств? Неужели неупорядоченность этих свойств делает невозможным их различение?
В моем случае я имею в виду конкретно ситуацию, когда функция должна принимать ряд пар имя-значение, но имена свойств могут измениться.
Мои мысли о том, как это сделать, пока заключаются в передаче имен свойств в функцию вместе с данными, но это похоже на взлом. Я бы предпочел делать это с помощью самоанализа, если это возможно.
источник
Старые версии JavaScript (<ES5) требуют использования
for..in
цикла:ES5 представляет Object.keys и Array # forEach, что немного упрощает задачу:
ES2017 представляет
Object.values
иObject.entries
.источник
источник
Вам часто может понадобиться изучить конкретные свойства экземпляра объекта без использования всех общих методов и свойств прототипа:
источник
Это получит все свойства и их значения (унаследованные или собственные, перечислимые или нет) в новом объекте. оригинальный объект остается нетронутым. Теперь новый объект можно перемещать, используя
источник
источник
.hasOwnProperty()
при использовании for in для итерации объекта.hasOwnProperty()
возвращает метод A ,boolean
указывающий , имеет ли объект указанное свойство в качестве своего собственного имущества (в отличие от наследования его) . см. этот примерВы можете использовать Object.keys () , «который возвращает массив имен перечислимых свойств данного объекта в том же порядке, что и в обычном цикле».
Вы можете использовать любой объект вместо
stats
:источник
Object.keys( stats )[key]
не имеет смысла, всегда будетundefined
.источник