2009-11-24 3 views
0

Почему бы ...Array.each выводит все методы

for(var k in this.errors) { 
     $('error_list').insert({ 
      bottom: new Element('li').update(k + ' :'+this.errors[k]) 
     }) 
    } 

... выход поставить все перечисляемые методы прототипа, а также то, что я добавил в массив?

Я строю ассоциативный массив:

this.errors['email'] = 'Your email is invalid'; 
+0

JavaScript не имеет реального ассоциативные массивы. Вы устанавливаете свойства массива (что является законным), но JavaScript не имеет специальных методов для этого использования. Для этой цели лучше использовать объекты, чем массивы. – Nosredna

ответ

2

Вы можете предотвратить это с помощью hasOwnProperty:

for(var k in this.errors) { 
    if (this.errors.hasOwnProperty(k)) { 
     $('error_list').insert({ 
      bottom: new Element('li').update(k + ' :'+this.errors[k]) 
     }) 
    } 
} 
2

Вы должны использовать «hasOwnProperty», чтобы защититься от этого.

1

Попробуйте это:

$H(this.errors).each(function(error) { 
    $('error_list').insert({ 
     bottom: new Element('li').update(error.key + ': ' + error.value) 
    }) 
}) 
Смежные вопросы