¿Existe la posibilidad de acceder a TODOS los parámetros de función destruidos en un objeto?

Entonces tengo esta función cabeza:

function coolFunctionName({test1 = "foo", test2 = "bar"})

Quiero acceder a ellos en un solo objeto. arguments no funciona, porque no hay almacenados los parámetros predeterminados que no tienen un valor en la llamada a la función.

¿Hay una manera buena y limpia de hacer eso?

EDITAR: no necesito los parámetros destruidos. Solo quiero tenerlos a todos en un solo objeto.

1
Vincent Hoch-Drei 14 sep. 2018 a las 17:29

3 respuestas

La mejor respuesta

Inspirado en la respuesta de Faly, creo que tengo la solución "más limpia":

function coolFunctionName(options = {}){
    options = Object.assign({
        test1: "foo",
        test2: "bar
    }, options);
}

Tengo el parámetro en un objeto y no tengo que escribir varios nombres de valores. No estoy contento con eso porque no está en el cabezal de la función, pero es la mejor solución que he encontrado.

1
Vincent Hoch-Drei 14 sep. 2018 a las 15:01

Para lograr el resultado esperado, use la siguiente opción para establecer el valor predeterminado dentro de la función

function coolFunctionName(x){
  x.test1 = x.test1 || 'foo'
  x.test2 = x.test2 || 'bar'
  console.log(x)
}
let z ={}
coolFunctionName(z);
let y ={test1:"zzz", test2:"yyy"}
coolFunctionName(y);

Codepen- https://codepen.io/nagasai/pen/KxBmod?editors=1011

0
Naga Sai A 14 sep. 2018 a las 15:15

Todo lo que puedes hacer es:

function coolFunctionName({test1 = "foo", test2 = "bar"}) {
    let arguments = { test1, test2 };
    /* Do whatever you want with arguments */
}
-1
Faly 14 sep. 2018 a las 14:33