테스트 사이트 - 개발 중인 베타 버전입니다

jQuery.extend()

· 7년 전 · 2897

jQuery.extend()

 

설명 : 두 개 이상의 객체의 내용을 함께 첫 번째 객체로 병합합니다.

두 개 이상의 개체 인수가 제공되면 $.extend()모든 개체의 속성이 대상 개체에 추가됩니다. 인수 가 무시 null되거나 undefined무시됩니다.

인수가 하나만 제공된 경우 $.extend()이는 대상 인수가 생략되었음을 의미합니다. 이 경우 jQuery 객체 자체가 대상으로 간주됩니다. 이렇게하면 jQuery 네임 스페이스에 새로운 함수를 추가 할 수있다. 이것은 JQuery에 새로운 메소드를 추가하고자하는 플러그인 작성자에게 유용 할 수 있습니다.

대상 객체 (첫 번째 인수)가 수정되고 또한 반환됩니다 $.extend(). 그러나 원본 객체를 모두 유지하려면 빈 객체를 대상으로 전달하면됩니다.


var object = $.extend({}, object1, object2);

수행되는 병합 $.extend()은 기본적으로 재귀 적으로 수행 되지 않습니다. 첫 번째 객체의 속성 자체가 객체 또는 배열 인 경우 두 번째 또는 후속 객체에서 동일한 키가있는 속성으로 완전히 덮어 씁니다. 값은 병합되지 않습니다. 이것은 바나나의 가치를 검토하여 아래 예에서 볼 수 있습니다. 그러나 true첫 번째 함수 인수를 전달하면 개체가 재귀 적으로 병합됩니다.

경고 : false첫 번째 인수에 대한 전달 은 지원되지 않습니다.

정의되지 않은 속성은 복사되지 않습니다. 그러나 객체의 프로토 타입에서 상속 된 속성 은 복사됩니다. new MyCustomObject(args)Date 또는 RegExp와 같은 내장 JavaScript 유형을 통해 생성 된 객체 인 속성은 다시 생성되지 않고 결과 객체 나 배열에 일반 객체로 나타납니다.

의 deep객체와 배열이 확장되어, 확장,하지만 같은 문자열, 부울 및 번호 등의 기본 유형 개체 래퍼가 없습니다. 주기적인 데이터 구조를 확장하면 오류가 발생합니다.

이 동작을 벗어나는 요구에 대해서는 대신 사용자 정의 확장 메서드를 작성하거나 lodash 와 같은 라이브러리를 사용하십시오 .

예 :
두 객체를 병합하여 첫 번째 객체를 수정합니다.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.extend demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="log"></div>
 
<script>
var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};
 
// Merge object2 into object1
$.extend( object1, object2 );
 
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( JSON.stringify( object1 ) );
</script>
 
</body>
</html>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
15854
15853
15852
15851
15849
15848
15847
15843
15842
15841
15840
15839
15838
15837
15836
15835
15834
15833
15832
15831
15830
15829
15828
15826
15825
15824
15823
15822
15821
15820