2009-11-24 89 views
0

爲什麼會...Array.each輸出所有方法

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

...輸出所有Prototype可枚舉方法,加上我添加到數組中的內容?

我正在建立一個關聯數組:

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

JavaScript並沒有真正的關聯數組。你正在設置數組的屬性(這是合法的),但JavaScript沒有這種用法的特殊方法。出於此目的,最好使用對象而非數組。 – Nosredna 2009-11-24 16:53:37

回答

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) 
    }) 
})