2016-03-02 67 views
-4

考慮下面的代碼(從mdn拍攝):ES2015中較短的功能?

var a = [ 
    "Hydrogen", 
    "Helium", 
    "Lithium", 
    "Beryl­lium" 
]; 

var a2 = a.map(function(s){ return s.length }); 

var a3 = a.map(s => s.length); 

是否有可能使它更短?例如:

var a4 = a.map(.length); 

以上不起作用(它會導致SyntaxError: Unexpected token .)。

那麼在ES2015中有什麼方法可以做到嗎?

+4

我希望不是。語法錯了。 – Dropout

+1

第12號更多去... –

+1

不,你不能。 – Grundy

回答

2

那麼,你可以嘗試這樣定義一個代理對象:

_ = new Proxy({}, { 
    get: (t, name) => x => x[name] 
}); 

然後

var a3 = a.map(_.length) 

這是否有道理,那是另一問題。

0

你不能這樣做,因爲它會與property accessors的使用方式衝突。

ECMAScript® 2015 Language Specification

在說明書文本和算法,點符號可以被用來指代一個記錄值的特定字段。例如,如果R是前一段中顯示的記錄,則R [[field2]]是「名爲[[field2]]的R的字段的簡寫」)。

TL; DR語法不正確。沒有哲學,你就無法獲得無所不在的財產。