2016-11-07 54 views
2

展望redux todomvc,爲什麼以下的{}之間沒有按鍵?例如在下面的textid之前沒有鑰匙?有點困惑。javascript:爲什麼在javascript對象中沒有按鍵

import * as types from '../constants/ActionTypes' 

export const addTodo = text => ({ type: types.ADD_TODO, text }) 
export const deleteTodo = id => ({ type: types.DELETE_TODO, id }) 
export const editTodo = (id, text) => ({ type: types.EDIT_TODO, id, text }) 
export const completeTodo = id => ({ type: types.COMPLETE_TODO, id }) 
export const completeAll =() => ({ type: types.COMPLETE_ALL }) 
export const clearCompleted =() => ({ type: types.CLEAR_COMPLETED }) 

歡迎任何評論。謝謝。

UPDATE

謝謝你的回答和評論。我發現我的問題有點愚蠢。目前,我正在學習反應和樂趣。我不熟悉es2015。有時,我無法區分2015es新語法和redux語法。謝謝。

+0

我不知道你在問什麼。 – Neal

+0

現在什麼關鍵? – Neal

+3

他失去了他的鑰匙。 –

回答

4

在ES2015(和JSX)對象初始值設定項中,您可以通過僅給出變量的名稱而沒有值後在對象上創建屬性;屬性的名稱是相同的變量名,屬性的值將是變量的值:

let one = 1; 
 
let obj = {one}; 
 
console.log(obj.one); // 1

所以在這條線:

export const addTodo = text => ({ type: types.ADD_TODO, text }) 

它不是密鑰(屬性名稱)不存在,而是不存在(明確)爲text屬性。它就像它是這樣寫的:

export const addTodo = text => ({ type: types.ADD_TODO, text: text }) 
// ---------------------------------------------------------^^^^^^ 

這只是速記。但它多麼有用,這是驚人的。

+0

這是一個完全合法的功能,但我仍然在與它鬥爭,因爲我習慣於在JSON中查看鍵值對。太多的心理體操。 :) –

+0

@ user3608792我認爲這個功能,箭頭功能和對象方法簡寫語法是ES2015的最佳功能。 – undefined

+0

@undefined:有很多可供選擇! ;-) –

5

ES6引入了shorthand for objects。在早期的實現,我們就需要做這樣的事情:

var id = "foo"; 

var obj = { 
    id: id 
} 

但隨着ES6我們可以簡單地這樣做:

var id = "foo"; 

var obj = { id }; 
相關問題