如何克隆整个"对象"在Javascript?

时间:2014-06-18 20:02:51

标签: javascript object copy clone

我已经尝试了很多我在这里找到的解决方案,但直到现在他们中的任何一个都解决了我的问题。

假设我有这样的函数:

    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内容的方法,但是现在还没有完全解决我的问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

var copyObj = arrayObj.constructor();
for (var attr in arrayObj) {
    if (arrayObj.hasOwnProperty(attr)) {
        copyObj[attr] = arrayObj[attr];
    }
}

答案 1 :(得分:0)

如果要复制该功能

var obj= Object.assign(SquareObject)
console.log(obj)

如果要复制构造函数,那么

Person(){
  this.age=20;
  this.name='ignatius';
  this.display = function(){
    console.log(`Name : ${this.name}  ${this.age}.`);
 }
}

var copy = Object.assign(Person);
var obj = new Person();

console.log(obj.name)// 'ignatius'

这也适用于对象。

var a= {
          name: 'ignatius',
          age: 2
  }

var copy = Object.assign(a)

console.log(a.name ) // ignatius