2016-10-04 28 views
1

我剛剛開始使用Angular2,通常注入提供者的方式如下所示:Angular2依賴注入:我在注入某個注入包的名稱(即'providers = [... SomeProvider]')之前看到的「...」語法是什麼

providers : [SomeProvider], 

不過,我已經看到了一些包,其中包括一個「......」正被注入像提供者的名稱前:

providers : [...SomeProvider], 

爲什麼能這樣做?什麼是...它在幹什麼?

+0

檢查:http://stackoverflow.com/questions/36008250/what-is-syntax-found-in-angular2 – micronyks

回答

2

這就是擴散算子。擴展語法允許在需要多個參數(用於函數調用)或多個元素(用於數組文字)或多個變量(用於解構賦值)的地方擴展表達式。

你可能在想爲什麼我們需要這個?要使用數組作爲參數的函數,通常的情況下使用Function.prototype.apply的:

更好的應用

例。

function myFunction(x, y, z) { } 
var args = [0, 1, 2]; 
myFunction.apply(null, args); 

隨着ES6傳播你現在可以在上面寫上:

function myFunction(x, y, z) { } 
var args = [0, 1, 2]; 
myFunction(...args); 

參數列表可以使用傳播語法的任何參數,並可以多次使用。

function myFunction(v, w, x, y, z) { } 
var args = [0, 1]; 
myFunction(-1, ...args, 2, ...[3]); 

更多信息和例子可以在這裏找到: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator