2016-10-19 3 views
2

이러한 개체를 스프레드 연산자에 병합하는 것과 동일합니다. 내 redux 응용 프로그램에서 할당 대신 확산을 사용하고 싶습니다.Object에 해당하는 스프레드 연산자

return Object.assign({}, obj1, obj2)

답변

3

등가가 될 것이다 :

return { ..obj1, ...obj2 }; 

그러나이 목적 나머지 확산로 (예 바벨 의해) transpiling없이 작동되지는 스테이지 3 추천하고 지원되지 현재 브라우저에서. 바벨을 사용하는 경우 Object rest spread transform 바벨 플러그인 또는 babel stage-3 preset을 사용해야합니다.

+0

그래서이 경우에는 내 객체 내부의 속성을 업데이트 할 때'{... obj1, obj1property : {... obj1.obj1property, ... obj2}'를 반환하겠습니까? – Jan

+0

이 작동하지 않습니다. ** 예기치 않은'...'**. –

+1

@ NinaScholz - 작품을보기 전에 투명하게 만들어야합니다 (3 단계 권장 사항). –

2

으로는 docs 설명 :

참고 : 배열을 복사하는 동안 일반적으로 ES6의 확산 운영자가 한 단계 깊은 간다. 따라서 다차원 배열 을 복사하는 데 적합하지 않습니다. Object.assign 및 Object spread 연산자의 경우와 같습니다. 아래 예제를 더 잘 이해하려면 을 확인하십시오.

즉, 펼치기가 새 개체에서 이루어 지므로 빈 개체를 전달할 필요가 없습니다. 즉 입니다. 따라서 당신은 다만 할 수 있습니다

const a = {...obj1, ...obj2}

이된다 :

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 

var a = _extends({}, obj1, obj2); 

See for yourself

return {...obj1, ...obj2} 
추가 참고로

, 여기 바벨이 확산 연산자를 transpiles하는 방법입니다

+0

에 할당하면 ** unexpected'...' **. –

+1

@ NinaScholz 이것은 ES6 구문이므로 babel과 같은 프리 컴파일러를 사용해야합니다. 그것으로 실패합니까? –

+0

바벨, 작동합니다. –

관련 문제