如何克隆JavaScript对象

如何克隆JavaScript对象

克隆JavaScript对象的任务通常是为了避免重复创建相同的对象。有几种方法:

  • 通过迭代每个属性并将它们复制到新对象中。
  • 使用 JSON 方法,源对象必须是JSON安全的。因此,需要异常处理来确保源对象不可转换为JSON的情况下仍然安全。
  • object.assign: 该方法只执行浅拷贝。这意味着嵌套的属性仍然是引用复制。
  • 使用 Spread operator 操作符

下面一一介绍这些方法,并提供示例:

示例1: 通过迭代源对象的属性,逐个将它们复制到目标对象中。这种方法非常简单,但使用频率不高。

<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="demo2">sourceObject = {a:1, b:2, c:3};</p>
<button onClick="fun()">click
</button>
<p id="demo"></p>
<script>
    function fun(){
    const sourceObject = {a:1, b:2, c:3};
    let tO = {};
        for (let prop in sourceObject) {
        if (sourceObject.hasOwnProperty(prop)) {
            tO[prop] = sourceObject[prop];
        }
        }
    document.getElementById("demo").innerHTML =
        "targetObject a = "+tO.a+", b = " + tO.b+", c = "+tO.c;
    }
</script>
HTML

输出:

如何克隆JavaScript对象

示例 2: 此示例使用JSON。使用此方法,源对象必须是JSON安全的。

<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="demo2">sourceObject = {a:1, b:2, c:3};</p>
<button onClick="fun()">click
</button>
<p id="demo"></p>
<script>
    function fun(){
    const sourceObject = {a:1, b:2, c:3};
    let tO = {};
    tO = JSON.parse(JSON.stringify(sourceObject));
    document.getElementById("demo").innerHTML =
    "targetObject a = "+tO.a+", b = " + tO.b+", c = "+tO.c;
    }
</script>
HTML

输出:

如何克隆JavaScript对象

示例3: 这种方法使用了Object.assign方法。

<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="demo2">sourceObject = {a:1, b:2, c:3};</p>
<button onClick="fun()">click
</button>
<p id="demo"></p>
 
<script>
    function fun(){
    const sourceObject = {a:1, b:2, c:3};
    let tO = {};
    tO = Object.assign({}, sourceObject);
    document.getElementById("demo").innerHTML =
        "targetObject a = "+tO.a+", b = " + tO.b+", c = "+tO.c;
    }
</script>
HTML

输出:

如何克隆JavaScript对象

示例4: 该方法使用扩展运算符。

<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="demo2">sourceObject = {a:1, b:2, c:3};</p>
<button onClick="fun()">click
</button>
<p id="demo"></p>
<script>
    function fun(){
    const sourceObject = {a:1, b:2, c:3};
    let tO = {};
    tO ={...sourceObject};
    document.getElementById("demo").innerHTML =
        "targetObject a = "+tO.a+", b = " + tO.b+", c = "+tO.c;
    }
</script>
HTML

输出:

如何克隆JavaScript对象

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册