先来实现一个最简版的 deepClone
1 | function deepClone(obj) { |
迭代版本的 deepClone
最近 EDA 项目在解决一些性能上的问题,首当其冲的就是 deepClone,各种地方都在用,且十分卡性能。如何解决这个问题呢?
由于我们项目中的 deepClone 是一个递归版本的 deepClone,所以应该可以通过把它改成迭代版的 deepClone 来提速。
用栈来实现迭代。函数调用栈本身也是栈,但开销肯定比自己写的栈要大一些。
1 | function toString(a) { |
不过很遗憾的是迭代版本速度比递归还要慢,估计是因为 js 的数组性能太差导致的。