object/defaults.jsjavascript
/**
* 用后续对象中的默认值填充缺失或值为 undefined 的属性。
* @function defaults
* @memberof module:object
* @param {...Object} objects 要合并的对象
* @returns {Object} 新对象,不修改任何输入对象
* @throws {TypeError} 参数不是对象时抛出
*/
function defaults(...objects) {
if (objects.some(object => object === null || typeof object !== 'object' || Array.isArray(object))) throw new TypeError('all arguments must be objects')
return objects.reduce((result, object) => {
Object.entries(object).forEach(([key, value]) => {
if (result[key] === undefined) result[key] = value
})
return result
}, {})
}
export default defaults