2012-07-17 25 views
9

Basit test code vardır: bir tartışma c göndermekDizi, birden çok bağımsız değişken olarak işlev nasıl gönderilir? JavaScript in

function x(a, b) { 
    alert(a); 
    alert(b); 
} 

var c = [1,2]; 
x(c); 

tanımsız kalır a ve b atanmış bir argüman olarak x() çalışması için: -/

nasıl katları olarak bir dizi gönderebilir bir diziye değil, bir işleve argümanlar mı?

+0

' Bir dizi ister misin? Sadece x 'i (1,2) ' – TheZ

+3

@TheZ Bunun sadece bir örnek olduğundan eminim –

+0

@JuanMendes Alright, belki belki x (c [0], c [1])'? Sanırım neyin gerekli olduğunu anlamıyorum. – TheZ

cevap

16

apply'a bakın. Senin durumunda

(eğer fonksiyonunda this kullanmıyorsanız beri), sadece window (veya this) geçebilir "Bu" argüman olarak:

x.apply(this, [1, 2]); 

Örnek:http://jsfiddle.net/MXNbK/2/

"Bu" bağımsız değişkeni olarak geçen null iletisiyle ilgili sorunuza ilişkin olarak, "bu" bağımsız değişkeni ile ilgili makaledeki MDN'nin yorumuna bakın:

yöntemi genel nesne ile değiştirilebilir olmayan katı mod kodu geçersiz ve tanımlanmamış irade bir fonksiyonu ise ve ilkel değerlerinin, Bu gerçek yöntem ile görülen değer olmayabilir

Not kutulu olmalıdır.

+0

Teşekkürler! Tam olarak aradığım şey bu. –

+0

İlk argüman olarak 'null' kelimesini geçmek için daha iyi olmazdı, çünkü '' '' '' '' '' '' '' 'bu tür işleve (ihanete) ilişkin hiçbir şey yoktur ...? –

+0

Yapabilirsin, ama inanıyorum ki bu fonksiyonun içinde hala “pencere” olacak. –

3

Veya ECMAScript'e 2015 tarayıcılarda (veya Babel transpiler ile), yeni yayılmış operatörünü kullanabilirsiniz: Neden eğer beğenmezseniz ilk etapta onları bir diziye tamamlanmakta

x(...[1, 2]) 
+1

Bu soruya bir cevap vermez. Bir yazardan eleştiri yapmak veya açıklama istemek için yazılarının altında bir yorum bırakın. - [Yorum Yaz] (/ review/düşük kaliteli yazılar/10184249) – andlrc

+2

@ dev-null Bu, sorunun geçerli bir cevabıdır.ES6'da (yayılan operatör) (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator) Function.apply gibi çalışır. –

İlgili konular