>  기사  >  웹 프론트엔드  >  jQuery에서 clone()과 extend()의 비교 및 ​​사용

jQuery에서 clone()과 extend()의 비교 및 ​​사용

巴扎黑
巴扎黑원래의
2017-06-25 10:03:011566검색

jQuery의 clone() 메소드,

 var obj = {
    chart: {
        type: 'spline',
        inverted: true
    },
    title: {//标题文字
        text: 'Atmosphere Temperature by Altitude'
    },
   ...

};
와 같은

object

를 사용자 정의할 때 다른 obj2를 사용자 정의하고 obj의 내용을 복사하려면

 var obj2 = obj.clone();

를 사용합니다. 해당 obj를 무시했다는 것을 분명히 알 수 있습니다. object일 뿐이며 clone() 메서드가 없습니다. 그러니 그것은 명백히 잘못된 시연입니다. 그러나 jQuery와 함께 제공되는 clone() 메서드는 이제 한 객체를 다른 객체로 복사하는 내 요구 사항을 더 이상 충족할 수 없습니다. clone(obj)

얕은 수준 복사: 기본이 아닌 데이터 유형의 경우 , 복제 후 결과적으로 두 포인터는 동일한 메모리 공간을 가리키므로 한 개체에 대해 작업을 수행하면 다른 개체의 내용도 변경됩니다.

깊은 복사: 가리키는 개체의 모든 속성 및 메서드를 복사본과 마찬가지로 새 개체가 가리키는 개체에 복사하므로 새 개체에 대한 수정 사항이나 기타 작업이 원본 개체에 영향을 미치지 않습니다. .

아래에서는 깊은 복사 방법을 제공합니다:

var cloneObj = function(obj){
var str, newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'&& typeof obj !=='function'){
    return;
}else {
    for(var i in obj){
        newobj[i] = typeof obj[i] === 'object' ?
            cloneObj(obj[i]) : obj[i];
    }
}
return newobj;
};

//克隆
var obj2=clone(obj);

내부의 일부 매개변수를 변경하려면 다음 방법을 사용할 수 있습니다.

obj2.title.text = "XXX";

extend():

extend() 방법을 사용합니다. 확장은 다음을 수행할 수 있음을 의미합니다. 하나 이상의 속성을 객체로 확장
빈 객체에 대해 이야기하는 경우 객체로 확장하는 것은 복제와 동일합니다

$.extend(true,obj,{});

결합 효과를 얻는 코드는 다음과 같습니다

 obj2 = $.extend(true,obj,obj2);

특정 매개변수를 덮어쓰려면 clone()과 동일한 덮어쓰기 방법을 선택하거나

obj2 = $.extend(true,obj,obj2);

앞에 다음 코드를 추가하도록 선택할 수 있습니다. :

아아아아

위 내용은 jQuery에서 clone()과 extend()의 비교 및 ​​사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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