28

構造化されていない関数の引数の名前を保持する方法はありますか? つまり、ルート オブジェクトの名前ですか?

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

4 に答える 4

21

私自身、あまりにも多くの場所で「オプション」引数を持っています。コードを 1 行追加することを選択します。この例では価値がありませんが、より多くの行で構造化を行う場合の良い解決策です。

const setupChildClass6 = options => {
    const {minVal, maxVal} = options;
    rangeSlider.setup(minVal, maxVal);
    setupParentClass6(options); 
};
于 2015-12-07T21:26:44.130 に答える
7

引数で直接行うことはできませんが、後で値を抽出できます。

function myFun(allVals) {
    const { val1, val2, val3 } = allVals;
    console.log("easy access to individual entries:", val2);
    console.log("easy access to all entries:", allVals);
}
于 2015-10-17T10:49:50.533 に答える