function deepCloneFunction(func) {
// 首先检查输入是否为函数
if (typeof func !== 'function') {
throw new Error('Input is not a function')
}
// 使用函数的源代码创建新的函数
const funcString = func.toString()
// 第一种拷贝函数方案
// const clonedFunc = eval(`(${funcString})`)
// 第二种拷贝函数方案
const clonedFunc = new Function(`return ${funcString}`)()
// 将原始函数的属性复制到新函数
for (let key in func) {
if (func.hasOwnProperty(key)) {
clonedFunc[key] = func[key]
}
}
return clonedFunc
}
function A() {
console.log(1)
}
A.a = 1
let cloneAA = deepCloneFunction(A)
cloneAA.a = 300
let cloneBA = deepCloneFunction(A)
console.log(cloneAA.a, cloneBA.a)