ES6 destructuring function parameter - naming root object
Solution 1:
I have the 'options' arguments on too many places myself. I would opt for 1 extra line of code. Not worthy in this example, but a good solution when having destructuring on more lines.
const setupChildClass6 = options => {
const {minVal, maxVal} = options;
rangeSlider.setup(minVal, maxVal);
setupParentClass6(options);
};
Solution 2:
You cannot do it directly in the arguments, but you can extract the values afterward:
function myFun(allVals) {
const { val1, val2, val3 } = allVals;
console.log("easy access to individual entries:", val2);
console.log("easy access to all entries:", allVals);
}
Solution 3:
You cannot use destructuring and simple named positional argument for the same parameter at the same time. What you can do:
-
Use destructuring for
setupParentClass6
function, but old ES6 approach forsetupChildClass6
(I think this is the best choice, just make name shorter):var setupChildClass6 = (o) => { rangeSlider.setup(o.minVal, o.maxVal); setupParentClass6(o); };
-
Use old
arguments
object. Butarguments
can slow down a function (V8 particular), so I think it's a bad approach:var setupChildClass6 = ({minVal, maxVal}) => { rangeSlider.setup(minVal, maxVal); setupParentClass6(arguments[0]); };
-
ES7 has proposal for rest/spread properties (if you don't need
minVal
andmaxVal
insetupParentCalss6
function):var setupChildClass6b = ({minVal, maxVal, ...rest}) => { rangeSlider.setup(minVal, maxVal); setupParentClass6(rest); };
Unfortunately it's not ES6.