如何克隆整个;“对象”;用Javascript?
我在这里找到了很多解决方案,但到目前为止,它们中的任何一个都真正解决了我的问题 假设我有这样一个函数:如何克隆整个;“对象”;用Javascript?,javascript,object,copy,clone,Javascript,Object,Copy,Clone,我在这里找到了很多解决方案,但到目前为止,它们中的任何一个都真正解决了我的问题 假设我有这样一个函数: var SquareObject = function(id, x, y, text, rectClass, textClass){ var arrayObj = { "id": null, "shape": "rect", "label": null, "rect": { "clas
var SquareObject = function(id, x, y, text, rectClass, textClass){
var arrayObj = {
"id": null,
"shape": "rect",
"label": null,
"rect": {
"class": null,
"x": null,
"y": null,
...
},
"text": {
"class": null,
"x": null,
"y": null,
...
}
function initArrayObj(){
...
}
function anotherFunction(){
...
}
}
如何复制所有内容,包括方法?因为在我复制了这个SquareObject之后,我必须更改位于arrayObj的属性,同时仍然保持其原始状态的副本
我已经找到了克隆arrayObj内容的方法,但现在这并不能完全解决我的问题
谢谢 如果要按原样复制函数
var copyObj = arrayObj.constructor();
for (var attr in arrayObj) {
if (arrayObj.hasOwnProperty(attr)) {
copyObj[attr] = arrayObj[attr];
}
}
var obj= Object.assign(SquareObject)
console.log(obj)
如果你想复制一个构造函数,那么
Person(){
年龄=20岁;
这个名字叫‘伊格纳修斯’;
this.display=函数(){
log(`Name:${this.Name}${this.age}.`);
}
}
var copy=对象。分配(个人);
var obj=新人();
console.log(obj.name)/“ignatius”
这也适用于对象
var a={
名称:“伊格纳修斯”,
年龄:2
}
var copy=Object.assign(a)
console.log(a.name)//ignatius
重复?你到底想“克隆”什么SquareObject
是一个包含多个局部变量的函数-您不能一次克隆它们。你想克隆到哪里?我以前尝试过该主题的所有解决方案。问题是我的函数不会返回任何东西,它就像OOP语言中的对象一样。@Ian,假设我有“var square1=SquareObject”之类的东西,而我需要“var square2=clone(SquareObject)”,这样我就可以从square2更改变量,而不用在square1中更改它们。但是如果你说我不能一次克隆所有的东西,我想我必须改变我的方法。