jQuery.extend()
jQuery.extend( [deep ], target, object1 [, objectN ] )
- deepType: BooleanIf true, the merge becomes recursive (aka. deep copy). Passing
false
for this argument is not supported. - targetType: ObjectThe object to extend. It will receive the new properties.
- object1Type: ObjectAn object containing additional properties to merge in.
- objectNType: ObjectAdditional objects containing properties to merge in.
extend() : 2개 이상의 오브젝트를 타겟 오브젝트와 merge할 수 있는 기능이다.
예시1)
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 );
이렇게 object2에 있는 항목들을 object1에 있는 항목들과 merge 하게되면
기존에 있던 항목들은 남아있고 겹치는 항목은 새로운 값으로 대체된다.
결과 :
기존에 있던 apple, cherry, durian은 남아있고
겹치는 항목인 banana는 내용이 새로운 값으로 변경된 것을 알 수 있다.
object1 = {
"apple":0,
"banana":{
"price":200
},
"cherry":97,
"durian":100
}
예시2)
var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97 }; var object2 = { banana: { price: 200 }, durian: 100 }; // Merge object2 into object1, recursively $.extend( true, object1, object2 );
첫번째 인자인 [deep]을 true로 주면 기존에 있는 항목이 대체되는 것이 아니라
기존에 있던 항목들은 남아있고 겹치는 항목은 새로운 값으로 대체된다.
결과 :
기존에 있던 apple, cherry, durian은 남아있고
겹치는 항목인 banana는 기존값 weight는 남아있고
겹치는 값인 price는 새로운 값으로 대체된 것을 알 수 있다.
object1 = {
"apple":0,
"banana":{
"weight":52,
"price":200
},
"cherry":97,
"durian":100
}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = $.extend( {}, defaults, options );
defaults -- {"validate":false,"limit":5,"name":"foo"}options -- {"validate":true,"name":"bar"}settings -- {"validate":true,"limit":5,"name":"bar"}
'개발개발 > jquery' 카테고리의 다른 글
[javascript/jquery] 동적화면에 이벤트 바인딩하기 (0) | 2018.08.08 |
---|---|
[javascript/jquery] JSON Object의 length 구하기 (0) | 2018.04.27 |
[javascript/jquery] tr 위 아래이동 (항목 순서 변경) (0) | 2018.04.06 |
[javascript/jquery] 금액 콤마찍기 (0) | 2018.04.06 |
[javascript/jquery] 날짜 관련 함수들 (0) | 2018.04.06 |