在ES6 解構函數參數中命名根物件
在ES6 解構函數參數中命名根物件ES6 提供解構作為一種從物件和陣列中提取屬性到變數的簡潔方法。然而,在解構函數參數時保留根物件的名稱可能會變得具有挑戰性。
ES5 繼承隱喻// ES5: var setupParentClass5 = function(options) { textEditor.setup(options.rows, options.columns); }; var setupChildClass5 = function(options) { rangeSlider.setup(options.minVal, options.maxVal); setupParentClass5(options); // pass the options object UP };
在ES5 中,您可以傳遞整個選項物件將繼承鏈「向上」到父類,允許其存取所有參數: // ES5: var setupParentClass5 = 函數(選項){ textEditor.setup(選項.行, 選項.列); }; var setupChildClass5 = 函數(選項){ rangeSlider.setup(options.minVal, options.maxVal); setupParentClass5(選項); // 傳遞選項物件 UP };
ES6解構// ES5: var setupParentClass5 = function(options) { textEditor.setup(options.rows, options.columns); }; var setupChildClass5 = function(options) { rangeSlider.setup(options.minVal, options.maxVal); setupParentClass5(options); // pass the options object UP };
透過ES6解構,提取具體參數變得更加方便:// ES6: var setupParentClass6 = ({行, 列}) => { textEditor.setup(行、列); }; var setupChildClass6 = ({minVal, maxVal}) => { rangeSlider.setup(minVal, maxVal); setupParentClass6( /* ??? */ ); // 如何傳遞根選項物件? };
選項:單獨提取或根物件傳遞// ES5: var setupParentClass5 = function(options) { textEditor.setup(options.rows, options.columns); }; var setupChildClass5 = function(options) { rangeSlider.setup(options.minVal, options.maxVal); setupParentClass5(options); // pass the options object UP };
一個選項是在setupChildClass6() 中單獨提取每個選項,然後將它們傳遞給setupParentClass6() 。然而,這種方法可能會因為參數較多而變得冗長:// 呃。 var setupChildClass6b = ({minVal, maxVal, 行, 列}) => { rangeSlider.setup(minVal, maxVal); setupParentClass6({行, 列}); };
使用臨時變數// ES5: var setupParentClass5 = function(options) { textEditor.setup(options.rows, options.columns); }; var setupChildClass5 = function(options) { rangeSlider.setup(options.minVal, options.maxVal); setupParentClass5(options); // pass the options object UP };
更簡潔的解決方案是使用臨時變數來保存根選項對象,然後將其傳遞給setupParentClass6():
const setupChildClass6 = 選項=> {
const {minVal, maxVal} = 選項;
rangeSlider.setup(minVal, maxVal);
setupParentClass6(選項);
};
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3