$.extend () 및 $.fn.extend()의 차이

2218 단어
jQuery.extend({
foo: function () {
alert('This is a test. This is only a test.');
}, bar: function (param) {
alert('This function takes a parameter, which is "' + param + '".');
}
});
$.extend();->this->this.foo->$.foo(); 확장 도구 방법

(function ($) {
$.fn.extend({
pluginName: function (opt, callback) {
//Our plugin implementation code goes here.
}
})
})(jQuery);jq 실례를 확장하는 방법
$.fn.extend()->this->$.fn->this.foo-$().foo();대상을 향하다
여러 개의 대상 변수를 쓸 때, 뒤의 대상은 모두 첫 번째 대상에게로 확장된다
var a={};
$.extent(a,{name:'hello',{age:30};})

딥 카피 및 얕은 카피


우선 jQuery의 extend는 깊이 복사할 수도 있고 얕게 복사할 수도 있습니다.\jQuery.extend 첫 번째 매개 변수는 깊이 복사 여부를 설정하는 데 사용할 수 있는 부울 값입니다.
jQuery.extend(true, { a : { a : "a" } }, { a : { b : "b" } } );

딥 복사란 객체 속성이 참조하는 객체를 모두 새 객체로 복사하여 딥 복사된 객체의 참조 맵에 기존 객체 또는 객체 맵의 객체가 포함되지 않고 완전히 다른 두 객체 맵을 분리하는 것을 의미합니다.
간단하게 말하면 간단한 복사본은 인용을 복제하는 것이다. 모든 인용 대상은 하나의 데이터를 가리키고 이 데이터를 수정할 수 있다.딥 카피는 변수 값을 복제하고 비기본 유형의 변수는 기본 유형 변수로 귀속된 후 복제합니다.
새로운 새로서 나는 이렇게 이해한다.
얕은 복사 ---> 은 한 객체의 메모리 주소에 대한 ""번호 ""를 다른 객체에 복사하는 것입니다.
심층 복제 ---> 실현 원리, 먼저 빈 대상을 새로 만들고, 메모리에 주소를 새로 열고, 복사된 대상의 모든 열거할 수 있는 (열거할 수 있는 대상 주의) 속성 방법을 하나하나 복제하고, 하위 대상 안의 모든 속성과 방법을 반복해서 복사해야 하며, 하위 대상까지...속성은 기본 데이터 형식입니다.
요약, 깊이 복제는 두 가지를 이해한다. 1, 메모리 주소를 새로 개척하고 2, 차례로 뿌리를 뽑아 복제한다.
작가: 아무리 찢어도 탈 수 없는 언니 링크:http://www.zhihu.com/question/23031215/answer/107144782출처: 저작권은 작가의 소유라는 것을 안다.상업 전재는 작가에게 연락하여 권한을 얻으십시오. 비상업 전재는 출처를 밝히십시오.
오늘 또 면접관에게 이 문제를 물었는데, 사후에 구글에 와서 이 문제가 뜻밖에도 4위에 올랐다는 것을 알았다
 
var cloneObj = function(obj){
    var str, newobj = obj.constructor === Array ? [] : {};
    if(typeof obj !== 'object'){
        return;
    } else if(window.JSON){
        str = JSON.stringify(obj), // 
        newobj = JSON.parse(str); // 
    } else {
        for(var i in obj){
            newobj[i] = typeof obj[i] === 'object' ? 
            cloneObj(obj[i]) : obj[i]; 
        }
    }
    return newobj;
};

이 함수는 대상과 그룹을 깊이 복사할 수 있다

좋은 웹페이지 즐겨찾기