// 전체 복사 상황 처리
if ( typeof target === "boolean" ) {
deep = target;
target = 인수[1] || {};
// 부울 및 대상 건너뛰기
i = 2;
}
// 대상이 문자열 등인 경우 처리(딥 카피에서 가능)
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
target = {} ;
}
// 하나의 인수만 전달되면 jQuery 자체 확장
if ( length === i ) {
target = this;
--i;
}
for ( ; i < length; i ) {
// null이 아닌/정의되지 않은 값만 처리합니다
if ( (options = 인수[ i ]) != null ) {
/ / 기본 개체 확장
for ( 옵션의 이름 ) {
src = target[ 이름 ];
copy = options[ 이름 ];
// 끝없는 루프 방지
if ( target === copy ) {
계속;
}
// 일반 객체나 배열을 병합하는 경우 재귀
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
만약 ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray(src) ? 소스 : [];
} else {
clone = src && jQuery.isPlainObject(src) ? src : {};
}
// 원본 개체를 이동하지 말고 복제하세요
target[ name ] = jQuery.extend( deep, clone, copy );
// 정의되지 않은 값을 가져오지 마세요
} else if ( copy !== undefine ) {
target[ name ] = copy;
}
}
}
}
// 수정된 객체 반환
return target;
};