let o1 = { id: 1, fn() { console.log('o1') } }
let o2 = { name: '张三', age: 20, fn() { console.log('o2') } }
// o1 = { ...o2, ...o1 }
o1 = merge(o1, o2)
o1.fn()
console.log(o1.name)
function merge(o1, o2) {
let obj = { ...o1 }
for (let key in o2) {
if (typeof o2[key] === 'function') {
if (o1[key]) {
obj[key] = function () {
// 此引用地址变成新的
let f2 = o2[key]
let f1 = o1[key]
f1()
f2()
}
}
} else {
obj[key] = o2[key]
}
}
return obj
}