2016-08-29 13 views
0

次のes6コードがどのように工場であるか説明してください。工場向けのes6構文

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

どこからこのコードを取得しましたか?構文自体は完全に無効です –

+1

@CarlMarkhamいいえ、うまく動作します。 –

+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''Anonymous1472322852680)を参照してくださいすべての値がデフォルト値です。それらは通常、渡されたオブジェクトから抽出されますが、存在しない場合は、その代わりに使用されます。これはdefault parametersです。

=> ({...})は、値を返すように簡略化されています(returnステートメントはありません)。したがって、ここでは値が渡されない限り、idmsguser、およびtimeStampに渡されたオブジェクトが返されます。destructingを使用してこれを達成しています。

https://jsfiddle.net/y7mb6jsp/

+0

あなたの答えは私のためにこれをクリアしました。返されるオブジェクトは、戻り値の中括弧構文によって単純に新しいインスタンスになります。新しいオブジェクト。あなたがまだes6を学んでいるなら、ちょっと混乱します。説明をいただきありがとうございます、これは参考になりました。 – hally9k

+0

@ hally9kインスタンスはありません。この関数は単純なオブジェクトを返します。 –

+0

はい、これはオブジェクトです。これは、ファクトリ関数に渡されたプリミティブを含む新しいインスタンスです。中括弧構文は新しいオブジェクトをインスタンス化します。 – hally9k

関連する問題