본문 바로가기

웹 프로그래밍/웹

[Jquery] 객체 복사하기 $.extend

전엔 솔직히 extend라는 메서드를 몰라서 직접 만들어서 썼었는데, 플러그인을 분석하다보니 Jquery Api Documents에 있더라.

여튼 아래 예제소스를 보면 대충 플러그인이 어떤식으로 구현이 되고 있는지 알 수 있을 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
    function audioPlayer(userSetting) {
        var defaultSet = {
            height: 300,
            width: 300,
            autoPlay: true,
            loopOption: true,
            backgroundImg: "none"
        }
        
        defaultSet = $.extend(defaultSet, userSetting);
        
        this.getSetInfo = function () {
            alert(defaultSet.height + ", " + 
                  defaultSet.width +  ", " + 
                  defaultSet.autoPlay +  ", " + 
                  defaultSet.loopOption +  ", " + 
                  defaultSet.backgroundImg
                 );
        }
    }
    
    var player = new audioPlayer({
        height: 400,
        width: 400,
        autoPlay: false,
        loopOption: false
    });
    
    player.getSetInfo();
</script>
cs

defaultSet = $.extend(defaultSet, userSetting);

위 코드가 바로 객체를 복사는 과정인데, defaultSet객체와 userSetting객체를 합쳐 default에 저장한다는 것이다.

그냥 defaultSet += userSetting; 하면 되지않느냐 하는데, 그게 가능할리가 없다..