js深复制对象,遇到了函数,Error对象如何复深制?

问题描述

js深复制对象,遇到了函数,Error对象如何复深制?

问题出现的环境背景及自己尝试过哪些方法

可以实现普通对象和数组,正则的深复制,但是对于函数,Error对象无法复制,如何解决?

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
我的实现方法

你期待的结果是什么?实际看到的错误信息又是什么?

可以深复制函数,Error对象等

阅读 2.9k
2 个回答

复制函数似乎没有太大意义,JS 里函数的身份比较特殊,由于闭包的关系,每个函数在声明时处于独立的执行环境。所以你简单复制一个函数,比如 funcA = new Function(funcB.toString),无法进入原先的执行环境,运行结果肯定是不同的。

Error 就是个普通对象,直接复制内容即可。

克隆数据,可深度克隆

new一个新的对象,适用于Date,RegExp,Error等不可变对象

switch(type){
    case 'Date':
    case 'RegExp': 
    case 'Error': value = new window[type](value); break;
}
推荐问题
宣传栏