2016년 6월 2일 목요일

jQuery.extend의 의미

자바스크립트 jQuery를 보다가 혹은 include되어있는 js파일에서 흔히 보이던 문구

  • jQuery 1.0 version
    jQuery.extend = jQuery.fn.extend = function (obj, prop) {
           if(!prop) {prop = obj; obj = this;}
           for( var i in prop) obj[i] = prop[i];
           return obj;
    };
    • jQuery.fn 
      • jQuery.prototype( jQuery 객체의 부모같은 역할)
    • jQuery.extend = jQuery.fn.extend = ...
      • jQuery함수 객체와 jQuery 함수 객체의 인스턴스 모두 extend함수가 있다는 말.
        > new jQuery(..).extend(); jQuery.extend() 둘 다 가능하다는말
    • if( !prop) { prop = obj; obj = this;}
      • extend함수 인자가 한개만 들어올 경우, 현재 객체 (this)에 인자로 들어오는 객체의 프로퍼티 복사, 두개가 들어오는 경우에는 첫번째에 두번째 객체의 프로퍼티를 복사하겠다는 것
    • for( var i in prop) obj [i] = prop [i];
      • 얕은복사 (shallow copy) : not copy the data just reference it.
        > 보통 extend구현 대상이 객체일경우  deep copy를 하는 것이 일반적
        함수 객체인 경우는 그대로 얕은 복사 진행. 

출처: 인사이드 자바스크립트 06장 - 객체 지향 프로그래밍

댓글 없음:

댓글 쓰기