我想复制一个对象。
之后,我计划修改副本中的值,但这些
修改不应影响原始对象。
因此我想制作一个克隆并目前使用 lodash 的 deepClone。
但它不断抛出以下错误:
<块引用>Error!Object(...) 不是函数
我的对象中没有函数。它只是在以下结构中。
它们只是键值,其中值是字符串或布尔值。
const myOriginalObject {
mainKey : {
isMobile: true,
data: {
id: '',
header: '',
flag: '',
desc1: '',
desc2: '',
logo: {
src: '',
alt: '',
},
img: {
src: '',
alt: '',
},
}
}
}
只是为了测试它创建了一个随机对象,如下所示。
即使这样也会引发同样的错误。
const myOriginalObject = {
b: '',
c: ''
}
这是深拷贝的实现。 myOriginalObject 可以是上述对象之一。
import { cloneDeep } from 'lodash/cloneDeep';
const myClone = cloneDeep(myOriginalObject);
我做错了什么?请建议。谢谢。
更新:
我来自 package.json 的 lodash 版本
"lodash": "^4.17.20",
错误:
<块引用>render 出现错误:TypeError: Object(...) is not a function
答案 0 :(得分:0)
你可以这样做:
import { cloneDeep } from 'lodash'; // <= Notice import method
const myOriginalObject = { a: '', b: ''};
const myClonedObj = cloneDeep(someObj);
或者:
import _ from 'lodash'; // <= Notice import method
const myOriginalObject = { a: '', b: ''};
const myClonedObj = _.cloneDeep(someObj);
从 'lodash/cloneDeep'
导入似乎不起作用(但我不确定为什么)。
[可能是 cloneDeep
在 _
中使用不同的目录来完整实现,但同样,不确定。]
答案 1 :(得分:0)
试试这个
const myOriginalObject {
mainKey : {
isMobile: true,
data: {
id: '',
header: '',
flag: '',
desc1: '',
desc2: '',
logo: {
src: '',
alt: '',
},
img: {
src: '',
alt: '',
},
}
}
}
const newObj = JSON.parse(JSON.stringify(myOriginalObject));
现在对 newObj 进行任何更改,它不会反映到 myOriginalObject;