>  기사  >  웹 프론트엔드  >  JavaScript에서 객체를 복제하는 방법은 무엇입니까?

JavaScript에서 객체를 복제하는 방법은 무엇입니까?

藏色散人
藏色散人원래의
2019-04-02 09:54:102457검색

각 속성을 반복하고 새 개체에 복제합니다. JSON 메서드를 소스 객체로 사용하는 것은 JSON에 안전해야 합니다. 따라서 소스 객체를 JSON으로 변환할 수 없는 경우에도 이를 안전하게 유지하기 위해 예외 처리가 필요합니다. object.sign 메서드는 얕은 복제만 수행합니다. 이는 중첩된 속성이 여전히 참조로 복제된다는 의미입니다. object.assign方法仅执行浅度克隆。这意味着嵌套属性仍然通过引用克隆。

JavaScript에서 객체를 복제하는 방법은 무엇입니까?

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

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

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

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

输出:

点击按钮前

JavaScript에서 객체를 복제하는 방법은 무엇입니까?

点击按钮后

JavaScript에서 객체를 복제하는 방법은 무엇입니까?

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

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

JavaScript에서 객체를 복제하는 방법은 무엇입니까?

참고, 얕음 Clone: ​​​​단순 유형은 값으로 전달되고, 객체 유형은 참조로 전달됩니다. 심층 복제: 모든 요소 또는 속성이 원본 개체에서 완전히 복사되고 완전히 분리됩니다. 즉, 새 개체에 대한 모든 수정 사항이 원본 개체에 반영되지 않습니다. JavaScript 개체를 복제하는 방법에는 다음과 같이 여러 가지가 있습니다.

예 1: 한 가지 방법은 소스 개체의 속성을 반복하고 모든 속성을 대상 개체에 하나씩 복사하는 것입니다. . 간단하지만 자주 사용되지는 않습니다.

<!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에서 객체를 복제하는 방법은 무엇입니까?🎜🎜예 2: 이 예에서는 JSON을 사용합니다. 이 방법을 사용하면 소스 객체가 JSON 안전해야 합니다. 🎜rrreee🎜예 3: 이 메서드는 Object.sign 메서드를 사용합니다. 🎜rrreee🎜관련 추천: "🎜javascript tutorial🎜"🎜🎜이 글은 자바스크립트에서 객체를 복제하는 방법에 관한 글입니다. 필요한 친구들에게 도움이 되길 바랍니다! 🎜

위 내용은 JavaScript에서 객체를 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.