js 对象补全实现方法 适用范围实现代码链接 适用范围 对两个对象中的key和value值进行合并,对第一个对象中存在的键和值进行保留, 第二个对象中存在但是第一个对象中没有的键值进行补充,并且第二个对象的值不会覆盖第一个对象中的值。 实现代码 //主要用于传入参数是NaN的情况,当两个参数都是NaN时,可以返回true function eq(value, other) { return value === other || (value !== value && other !== other); } //对象补全策略 function defaults(object, ...sources) { object = Object(object); sources.forEach((source) => { if (source != null) { source = Object(source); for (const key in source) { const value = object[key]; //当目标对象中不存在该键值对,或者此键值对存在该对象的原型链上时,把source的值赋值给目标对象 if (value === undefined || (eq(value, Object.prototype[key]) && !Object.prototype.hasOwnProperty.call(object, key))) { object[key] = source[key]; } } } }) return object } 链接 相关代码的GitHub地址