2016-08-29 3 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'', Anonymous, 1472322852680) 디폴트의 값입니다. 그들은 일반적으로 전달 된 객체에서 추출되지만, 존재하지 않으면 이들이 대신 사용될 것입니다. 이것은 default parameters입니다.

=> ({...})은 값을 반환하기위한 약식입니다 (return 문이 없음을주의하십시오). 그래서 여기서 값이 전달되지 않는 한 id, msg, usertimeStamp에 전달 된 객체가 반환됩니다. destructing을 사용하여이 작업을 수행하고 있습니다.

https://jsfiddle.net/y7mb6jsp/

+0

당신의 답변으로 저를 해결할 수 있습니다. 돌려 주어지는 오브젝트는, 반환 값의 중괄호의 신택스에 의해 새로운 인스턴스가됩니다. 새로운 Object. 당신이 아직도 es6을 배우고 있다면 약간 혼란 스럽습니다. 설명 주셔서 감사합니다. – hally9k

+0

@ hally9k 인스턴스가 없습니다. 이 함수는 일반 객체를 반환합니다. –

+0

예, 객체입니다. 팩토리 함수에 전달 된 프리미티브를 포함하는 새로운 인스턴스입니다. 맞습니까? 중괄호 구문은 새로운 객체를 인스턴스화합니다. – hally9k