2016-08-29 2 views
0

Не могли бы вы объяснить, как следующий код es6 является фабрикой.Синтаксис es6 для фабрики

const createChat = ({ 
    id = 0, 
    msg = '', 
    user = 'Anonymous', 
    timeStamp = 1472322852680 
} = {}) => ({ 
    id, msg, user, timeStamp 
}); 
+0

Откуда у вас этот код? Сам синтаксис полностью недействителен –

+1

@CarlMarkham Nope, он отлично работает. –

+0

https://gist.github.com/ericelliott/97ad722d1f65484752ced4cdcc145040#file-chat-reducer-factories-js https://medium.com/javascript-scene/10-tips-for-better-redux-architecture-69250425af44# .kqscvptf2 – hally9k

ответ

1

Все значения, которые вы видите (0, '', Anonymous, 1472322852680) значения по умолчанию. Обычно они извлекаются из переданного объекта, но если они не существуют, это то, что будет использоваться на их месте. Это default parameters.

=> ({...}) является сокращением, чтобы вернуть стоимость (уведомление о том, что нет return). Таким образом, здесь возвращается объект с переданными в id, msg, user и timeStamp, если эти значения не переданы. Это достигается с помощью destructing.

https://jsfiddle.net/y7mb6jsp/

+0

Ваш ответ прояснил это для меня. Возвращаемый объект представляет собой новый экземпляр просто благодаря синтаксису фигурного скобки возвращаемого значения. новый объект. Это немного запутанно, если вы все еще изучаете es6. Спасибо за объяснение, это было полезно. – hally9k

+0

@ hally9k Нет никаких случаев. Функция просто возвращает простой объект. –

+0

Да, это объект, который представляет собой новый экземпляр, содержащий примитивы, которые были переданы в заводскую функцию, верно? Синтаксис фигурной скобки создает новый объект, верно? – hally9k

Смежные вопросы