一尘不染

ES6解构函数参数-命名根对象

javascript

有没有办法保留解构函数参数的名称?即,根对象的名称?

在ES5中,我可以这样做(使用继承作为隐喻来说明这一点):

// ES5:
var setupParentClass5 = function(options) {
    textEditor.setup(options.rows, options.columns);
};

var setupChildClass5 = function(options) {
    rangeSlider.setup(options.minVal, options.maxVal);
    setupParentClass5(options); // <= we pass the options object UP
};

我正在使用同一个options对象来保存多个配置参数。某些参数由父类使用,而某些参数由子类使用。

有没有办法用ES6中的结构化函数参数来做到这一点?

// ES6:
var setupParentClass6 = ({rows, columns}) => {
    textEditor.setup(rows, columns);
};

var setupChildClass6 = ({minVal, maxVal}) => {
    rangeSlider.setup(minVal, maxVal);
    setupParentClass6( /* ??? */ );  // how to pass the root options object?
};

还是我需要提取所有选项,setupChildClass6()以便可以将它们分别传递给setupParentClass6()

// ugh.
var setupChildClass6b = ({minVal, maxVal, rows, columns}) => {
    rangeSlider.setup(minVal, maxVal);
    setupParentClass6({rows, columns});
};

阅读 765

收藏
2020-05-01

共1个答案

一尘不染

我本人在太多地方都有“选项”论据。我会选择1行额外的代码。在此示例中不值得,但是在更多行上进行销毁时是一个很好的解决方案。

const setupChildClass6 = options => {
    const {minVal, maxVal} = options;
    rangeSlider.setup(minVal, maxVal);
    setupParentClass6(options); 
};
2020-05-01