2016-11-07 2 views
2

Оглядываясь в redux todomvc, почему нет ключей между следующими {}? например нет ключей до text и id следующим образом? Немного смущен.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. Иногда я не могу различить синтаксис синтаксиса 2015 года и синтаксиса 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 }; 
Смежные вопросы