我已经尝试了很多我在这里找到的解决方案,但直到现在他们中的任何一个都解决了我的问题。
假设我有这样的函数:
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内容的方法,但是现在还没有完全解决我的问题。
谢谢!
答案 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