如何克隆整个;“对象”;用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中更改它们。但是如果你说我不能一次克隆所有的东西,我想我必须改变我的方法。