使用 ES6 的展开运算符和 Object.assign() 方法来实现。
代码示例:
function withDefaults(fn, defaults) {
return function(...args) {
const argsWithDefaults = Object.assign({}, defaults, ...args);
return fn(...argsWithDefaults);
};
}
使用示例:
function sayHi(name, greeting = 'Hello') {
console.log(`${greeting}, ${name}!`);
}
const sayHiWithDefaults = withDefaults(sayHi, { greeting: 'Hey there' });
sayHiWithDefaults('Tom'); // logs "Hey there, Tom!"
sayHiWithDefaults('Jerry', { greeting: 'Hi' }); // logs "Hi, Jerry!"