下面是我自己封装的一个深拷贝函数:
//深拷贝函数
function cloneFunction(fn) {
//参数验证
if (!(fn && fn instanceof Function)) {
throw new Error("参数为必须并且参数类型为函数")
}
// 将函数转成字符串
let str = fn.toString()
//截取函数体内容字符串
let subStr = str.substring(str.indexOf("{") + 1, str.lastIndexOf("}"))
// 利用截取函数体内容的字符串和函数的构造器生成新的函数并返回
return new Function(subStr)
}