jQuery의 clone() 메소드, var obj = {
chart: {
type: 'spline',
inverted: true
},
title: {//标题文字
text: 'Atmosphere Temperature by Altitude'
},
...
};
와 같은
를 사용자 정의할 때 다른 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(true,obj,{});
결합 효과를 얻는 코드는 다음과 같습니다
obj2 = $.extend(true,obj,obj2);
특정 매개변수를 덮어쓰려면 clone()과 동일한 덮어쓰기 방법을 선택하거나
obj2 = $.extend(true,obj,obj2);
앞에 다음 코드를 추가하도록 선택할 수 있습니다. :
아아아아위 내용은 jQuery에서 clone()과 extend()의 비교 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!