用weakmap记录,防止深拷贝的循环引用导致栈溢出