Итерации по каждому свойству объекта в javascript с использованием прототипа?
Есть ли способ перебрать каждое свойство объекта с помощью инфраструктуры Prototype JavaScript?
Вот ситуация: я получаю ответ AJAX в формате JSON, который выглядит примерно так:
{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
Если я оцениваю этот ответ json в переменной response
, я хочу иметь возможность перебирать каждое свойство в response.barobj
объекте, чтобы увидеть, какие индексы верны, а какие - ложны.
Prototype имеет и то, Object.keys()
и другое, Object.values()
но, как ни странно, не имеет простой Object.each()
функции! Я мог бы взять результаты Object.keys () и Object.values () и сделать перекрестную ссылку на другой, когда я повторяю один, но это такой взлом, что я уверен, что есть правильный способ сделать это!
Ответов (3)3
Сначала вам нужно преобразовать литерал вашего объекта в хеш прототипа :
// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
// Iterate like so. The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
alert(pair.key);
alert(pair.value);
});
Вы должны перебирать ключи и получать значения, используя квадратные скобки.
См .: Как мне перечислить свойства объекта javascript?
РЕДАКТИРОВАТЬ: Очевидно, это дублирует вопрос.
Здесь нет необходимости в прототипе: в JavaScript есть for..in
циклы. Если вы не уверены, что никто не напортачил Object.prototype
, проверьте hasOwnProperty()
также, т.е.
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
doSomethingWith(obj[prop]);
}