JavaScript如何实现克隆对象?


本文摘自PHP中文网,作者藏色散人,侵删。

通过遍历每个属性并将它们克隆到新对象。使用JSON方法作为源对象必须是JSON安全的。因此,在源对象无法转换为JSON的情况下,需要异常处理以保证其安全。object.assign方法仅执行浅度克隆。这意味着嵌套属性仍然通过引用克隆。

注,浅度克隆:简单类型为值传递,对象类型是引用的传递。深度克隆:所有元素或属性完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。

克隆JavaScript对象有几种方法,如下:

示例1:一种方法是遍历源对象的属性,并将所有属性逐个复制到目标对象。它很简单,但不常使用。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

</head>

 

<body style = "text-align:center;">

<h1 style = "color:green;" >

    js克隆对象

</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>

</body>

</html>

输出:

点击按钮前

be020810ab9f3af8390248c8fa2f559.png

点击按钮后

e445a7df2425491df589446d49c6df8.png

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

</head>

<body style = "text-align:center;">

<h1 style = "color:green;" >

    js克隆对象

</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>

</body>

</html>

示例3:此方法使用Object.assign方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<!DOCTYPE html>  

<html>  

    <head> 

        <meta charset="UTF-8">

        <title></title>

    </head> 

    <body style = "text-align:center;">  

     

        <h1 style = "color:green;" >  

           js克隆对象

        </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> 

    </body>  

</html>

相关推荐:《javascript教程》

本篇文章就是关于javascript克隆对象的方法介绍,希望对需要的朋友有所帮助!

以上就是JavaScript如何实现克隆对象?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

javascript如何实现克隆对象?

更多相关阅读请进入《JavaScript克隆对象》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...