2016-07-28 1 views
1

기본값으로 고려되지 않은 추가 값을 유지하면서 일부 기본 매개 변수를 소멸을 통해 설정할 수 있습니까? 예 :기본값이 아닌 값을 유지하면서 객체 소멸시 기본값 사용

var ob = {speed: 5, distance: 8} 

function f({speed=0, location='home'}) { 
    return {speed: speed, location: location, /* other keys passed in with their values intact */} 
} 

f(ob) // Would like to return {speed: 5, location: 'home', distance: 8} 

편집 : 내 기능은 엑스트라로 전달 될 수있는 키의 이름을 알지 못합니다. 예를 들어,이 함수는 'distance'라는 이름의 키를 수신하는지 아니면 'foo'라는 이름의 키인지를 알지 못합니다. 그래서 나는 어떤 종류의 사용을 생각하고있다. 나머지는 ... 퍼짐이다.

+0

'복귀 {속도, 위치, 거리 : 8}' – gcampbell

+0

좀 더 내가 여분의 키를 모르는 상황을 찾고 있어요을 그 나는 그것을 더 명확하게하기 위해 편집 할 것입니다. –

+1

object [property] (https://github.com/sebmarkbage/ecmascript-rest-spread) rest/spread에 대한 제안이 있지만 아직까지는 아직 제안서에 불과합니다. – gcampbell

답변

2

현재 es6에서는 사용할 수 없지만 스테이지 2 사전 설정을 통해 나머지 연산자를 사용할 수는 있습니다.

function f({speed= 0, location: 'home', ...others}) { 
    return Object.assign({}, {speed, location}, others); 
} 
2

여전히 기본에 설명되지 여분의 값을 유지하면서 destructuring를 통해 몇 가지 기본 매개 변수를 설정할 수 있습니까?

아니요, 아니요. 별도의 객체 기본값을 저장하고 Object.assign 사용할 수 있습니다

var ob = {speed: 5, distance: 8}; 
var defaults = {speed: 0, location: 'home'}; 

function f(obj) { 
    return Object.assign({}, defaults, obj); 
} 

f(ob); 
관련 문제