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

标签 javascript function arguments ecmascript-6 destructuring

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

在 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});
};

最佳答案

我自己在太多地方都有“选项”参数。我会选择 1 行额外的代码。在此示例中不值得,但在更多行上进行解构时是一个很好的解决方案。

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

关于javascript - ES6解构函数参数——命名根对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33185667/

相关文章:

javascript - noUiSlider 多范围访问第一个句柄

c++ - 在 C++ 中使用带有 .h header 的 DLL

javascript - Private V.S. 令人困惑的例子<Javascript Patterns> 书中的公共(public)方法?

javascript - JS 'arguments' 对象如何转换为数组

Javascript 函数没有正确接收参数

javascript - navigator.mediaDevices.getUserMedia 在 navigator.getUserMedia() 工作时不工作

javascript - 使用 jquery Accordion 在 html 中复制这种效果

javascript - x 轴上的 float 阈值

function - IDL函数GAUSSFIT.pro错误

ruby-on-rails - 参数数量错误 [ex :(3 for 2)] in methods [but only pass 2]