Web/JQuery
[jQuery] 객체 합치기 ($.extend)
클리엘
2020. 6. 2. 11:14
728x90
jQuery의 $.extend 메서드는 두 번째 매개변수에 지정된 객체의 속성을 첫 번째 매개변수에 지정한 객체와 합쳐주는 역할을 수행합니다.
아래 예제는 기존 javascript에서 객체를 생성 후 해당 객체에 원하는 속성을 추가하는 방법을 보여주고 있습니다.
$(function () {
var obj = {};
obj.name = '홍길동';
alert(obj.name);
});
이것을 jQuery의 $.extend를 사용하면 다음과 같이 바꿀 수 있습니다.
$(function () {
var obj = {};
$.extend(obj, { name : '홍길동' });
alert(obj.name);
});
물론 다수의 속성을 추가하는데도 사용할 수 있으며 속성이 많으면 많을수록 $.extend메서드를 사용하는 편이 좀 더 나을 수 있습니다.
$(function () {
var obj = {};
$.extend(obj, {
name : '홍길동',
addr : '서울시'
});
alert(obj.addr);
});
단 $.extend를 사용 시 주의해야 할 부분이 있습니다.
$(function () {
var obj = { name : '홍길순' };
$.extend(obj, {
name : '홍길동',
addr : '서울시'
});
alert(obj.name);
});
위 예제에서는 obj에 이미 name이 있으나 $.extend메서드로 인해 기존의 name값이 '홍길동'으로 덮어써지게 되는 것을 알 수 있습니다.
이러한 문제는 다음과 같은 방법으로 보완할 수 있습니다.
$(function () {
objExtend({ name : '홍길순' });
});
var objExtend = function(obj) {
obj = $.extend({
name : '홍길동'
}, obj);
alert(obj.name);
};
예제에서는 고의적으로 name속성을 지정해 값을 할당하고 있습니다. 이렇게 하면 obj의 name은 '홍길순'이 됩니다. 그러나 만약 name을 지정하지 않으면 name의 값은 '홍길동'을 유지하게 됩니다.
$(function () {
objExtend({ addr : '서울시' });
});
var objExtend = function(obj) {
obj = $.extend({
name : '홍길동'
}, obj);
alert(obj.name);
};
728x90