2016-01-11 34 views
14

Başlık olarak, bu 3 başlatma yöntemi arasındaki farkın ne olduğunu merak ediyorum.Array.of (n), Array (n) ve array = [n] arasındaki fark nedir?

Aslında ES6'dan temin edilen yeni Array.of() yöntemiyle daha çok ilgileniyorum.

+0

var temp = new Array(2); // temp = [undefined, undefined] 

temp = [2] belki benim soru kestim usecases yerine basit dokümanlar pratik explaination arıyorum belli değildi, eleman içeren bir dizi yaratacak & yapıştırmak. @AmmarCSE yine de bunun için teşekkürler –

cevap

21

Dizi yapıcı iki yolla çağrılabilir: bir değerler listesi dizi elemanlarının değerleri olarak kullanılabilir veya başlangıç ​​uzunluğunu veren tek bir sayısal değere sahip olması:

var myArray = new Array("hello", "world"); // 2 elements 
var otherArray = new Array(100); // 100 elements, all empty 

bir belirsizlik orada Çünkü sadece bir sayı geçmiştir, eski API'nın kötü tasarlanmış olduğu düşünülmektedir.

var otherArray = Array.of(100); // 1 element 

bir dizi yapmak için üçüncü bir yol, bir dizi başlatma ifade ile: Bu durumda, dizi kurucu ilk seçenek olarak aynı olan, Array.of() var

var otherArray = [100]; // 1 element 

dizi örnekleri bu Yukarıdakilerin her biri tarafından yaratılmış fonksiyonel olarak eşdeğer ve tamamen değiştirilebilir.

Bir şey daha: dizi başlatma ifadesini kullanabileceğimiz için neden Array.of() neden var? Eh, Array.of() bir işlev, bu yüzden işlevsel tarzı programlamada uygulanan bir değer olarak kullanılabilir. Sen (hafif dilsiz örnek olarak) içeren bir dizi kopyalayabilirsiniz:

var copy = Array.from(original); 

That çalışır: dilsizdir

var copy = Array.of.apply(Array, original); 

Bir sebepten Array.from() aynı şeyi yapmak için (ES2015 içinde) da var olmasıdır yinelenebilir her tür orijinal, bu yüzden arguments veya NodeList bir dizi içine çevirmek için iyi bir yoldur.

MDN site, Array.of() belgelerine sahiptir. Yapıcı ve dizi başlatıcı formu sonsuza kadar bu yana olmuştur, bu nedenle herhangi bir JavaScript referansı (muhtemelen Array.of() referans alınmaksızın) bunları kapsayacaktır.

+1

@thefourtheye oh haklısın haklısın :) '. Array 've bu anlamsız bir örnek için biraz garip. – Pointy

+0

cevabınıza, yalnızca daha eksiksiz hale getirmek için bazı referans linkleri ekleyebiliriz. [Bu] gibi bir şey (https://gist.github.com/rwaldron/1074126) yararlı görünüyor @Pointy –

+0

İyi bir fikir. Ayrıca, şu anda InternetExplorer'ın yeni ES2015 yöntemlerini desteklemediğini de belirtmek gerekir. – Pointy

3

Array.of(2) 2 elemanlarından oluşan bir dizi oluşturur elemanı 2.

var temp = Array.of(2); // temp = [2] 

Array(2) içeren bir dizi oluşturur. ben zaten gördüm 2.

var temp = [2]; // temp = [2] 
İlgili konular