2013-06-29 26 views
5

Aşağıdaki kodda, [] neyin temsil edildiğinden emin değilim. En son bildirilen diziyi sembolize ettiğimi varsayıyorum. Herkes açıklayabilir mi?[] içinde [] içinde bulunur. ForEach.call()

var lists = [racersList, volunteersList]; 
[].forEach.call(lists, function(list) { 
    ... 
}); 
+2

Neden sadece 'lists.forEach (işlev (liste), {...}); '? – Blender

+0

@Blender kodun ne yaptığını soruyor, o yüzden yazmadı. – Stijn

+0

@Stijn: Belki. Bir öneri acıtmayacak. – Blender

cevap

17

Boş bir dizidir. Gerçekten hangi dizi olduğu önemli değil; Bir dizinin forEach yöntemini almak için bazı dizisine ihtiyaç duyar. Boş bir dizi oluşturmak ve bunun dışında forEach kazmak yerine doğrudan almak için Array.prototype.forEach'u da kullanabilirsiniz.

Bu yaklaşım, genellikle, bir dizi benzeri nesne olması, kullanılan (NodeList benzerleri; vardır length, 0, 1, 2 vb özellikleri) ama aslında bir dizi değil. Dizi benzeri nesne dizi yöntemlerine sahip değildir, ancak dizi yöntemlerini uygun this (call ile elde edilen) ile çalıştırabiliyorsa, yine de çalışacaktır. Burada beri

aslında sen, mesela doğrudan lists.forEach(...)forEach çağırabilir, bir gerçek dizi ziyade bir array- gibi nesne var.

+0

Bu durumda, "listeler" * bir dizidir * yani bir nokta yoktur. – Pointy

İlgili konular