2016-09-29 32 views
-1

我對JavaScript中的Array.from()有點困惑。我知道/認爲將類似數組的值轉換爲數組,但爲什麼,如果數組是一個對象,那麼在我們可以使用它之前,我們不必使用'new'關鍵字來實例化它嗎?在JS中使用Array.from()

+0

'from'不是填充實例化數組的實例方法,而是'Array'類本身的靜態方法。 – Bergi

回答

0

Array是一個函數,函數是對象,對象有屬性。 from只是該對象的一個​​屬性。 Array是一個函數,而可以調用可以調用是無關緊要的。

實施例:

function foo() {} 

foo.bar = function() { 
    console.log('hi'); 
} 

foo.bar(); // hi 

據推測添加from作爲屬性Array的主要原因是爲了它命名空間(而不是創建另一個全局函數)。

+0

謝謝。有一件事很快,可能是一個愚蠢的問題 - 可能是 - 但是如果Array是一個帶有方法的靜態函數,那麼這是否意味着我聲明的Arrays也有可用的.from()方法,因爲它們是類型的陣列?即使有這樣的方法在陣列上沒用也是...我有什麼意義嗎? – Joshua

+1

No.數組「繼承」Array.prototype中定義的所有方法,而不是Array。考慮'Array.from'作爲一個類方法。它是在班上定義的,而不是在其實例上定義的。就像在我上面的例子中一樣,如果你做了'var f = new foo();','f'就沒有'bar'方法。要了解更多關於函數和原型的信息,請查看http://felix-kling.de/jsbasics/#/10。 –

+0

第二個原因可能是允許子類化:-) – Bergi

1

JavaScript有幾種集合類型(HTMLCollection,NodeList,FileList,'arguments'等)。後者是包含傳遞給函數的所有參數的變量。

成像您有一個函數,需要使用普通數組傳遞數據 - 在這種情況下,Array.from(..)對於轉換任何其他集合類型非常有用。