2016-12-05 62 views
0

我看到的代碼在互聯網:的Javascript對象ES6

const SIGNIN_USER = 'SIGNIN_USER'; 
const SIGNUP_USER = 'SIGNUP_USER'; 
const ACTION_HANDLERS = { 
    [SIGNIN_USER]: (para1) => { return para1; }, 
    [SIGNUP_USER]: (para2) => { return para2;}, 
} 

// Using ACTION_HANDLERS object: 
const handler = ACTION_HANDLERS[para3]; 
return handler ? handler(para3) : "Frist Time"; 

我明白ACTION_HANDLERS是一個對象。但我不明白這裏的[SIGNIN_USER], [SIGNUP_USER], ACTION_HANDLERS[para3]是什麼意思???。

我嘗試Babel轉換到ES5,但我根本不明白。

我也不知道要搜索的關鍵字。誰能幫我嗎?

+0

有很多ES2015善良在該代碼發生的事情 - 如果你有什麼不明白的ES5版本意味着,這將是很難的方式,你就會明白 –

+2

解釋好像'計算性能'可能是你在找什麼? – loganfsmyth

+0

和箭頭功能 –

回答

3

ES6中的對象支持計算屬性鍵名稱。

const myKey = 'baz'; 
const someObjWithRandomValues = { 
    ['foo']: someValue, 
    [myKey]: otherValue, 
    ['rab'.reverse()]: anotherValue 
}; 

// This is the same as 
const someObjWithRandomValues = { 
    foo: someValue, 
    baz: otherValue 
    bar: anotherValue 
}; 

方括號中的表達式被評估,併成爲屬性的名稱。

const someObj = { 
    [someExpression]: someValue 
}; 

const someObj = {}; 
someObj[someExpression] = someValue; 

至於ACTION_HANDLERS[para3],這只是訪問與方括號的屬性同樣的事情,並一直以功能的Javascript已經有很長一段時間。

const para3 = 'foo'; 
myObj[para3](); 
// Same thing as: 
myObj.foo();