2012-03-29 2 views
0

아래는 자바 스크립트의 확장 기능입니다. jQuery에서 $ .extend()와 동일합니다. JavaScript 객체를 업데이트/수정하는 데 사용됩니다.자바 스크립트의 확장 함수 사용

var extend= function() { 
      var options, 
      name, 
      src, 
      copy, 
      copyIsArray, 
      clone, 
      target = arguments[0] || {}, 
      i = 1, 
      length = arguments.length, 
      deep = false; 

      if (typeof target === "boolean") { 
       deep = target; 
       target = arguments[1] || {}; 
       i = 2; 
      } 

      if (typeof target !== "object" && !isFunction(target)) { 
       target = {}; 
      } 

      if (length === i) { 
       target = this; 
       --i; 
      } 

      for (; i < length; i++) { 
       if ((options = arguments[i]) != null) { 
        for (name in options) { 
         src = target[name]; 
         copy = options[name]; 

         if (target === copy) { 
          continue; 
         } 

         if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { 
          if (copyIsArray) { 
           copyIsArray = false; 
           clone = src && isArray(src) ? src: []; 

          } else { 
           clone = src && isPlainObject(src) ? src: {}; 
          } 

          target[name] = extend(deep, clone, copy); 

         } else if (copy !== undefined) { 
          target[name] = copy; 
         } 
        } 
       } 
      } 
      return target; 
     } 

는 그것은 다음과 같이 호출됩니다

extend(curConfig, newConfig); 

는 새와 객체를 수정하는 모든 곳에서 사용되는 표준 기능이므로. 이 기능을 이해하고 분석하고 싶습니다.

  1. 함수 정의에 전달할 수있는 매개 변수가 없으므로 사용하는 동안 매개 변수가 여러 개 필요합니다. 그렇다면이 함수는 어떻게 작동합니까?
  2. 이 기능의 다른 용도는 무엇입니까? 그것을 호출하는 방법은 무엇입니까?
  3. 5 개의 개체 매개 변수가 함수에 전달되면 First param은 대상이되고 나머지는 원본이됩니다. 권리 ? 오브젝트가 없으면 오브젝트가 대체 또는 복사됩니까?

누구든지 예제 (또는 jsfiddle 데모로 가능한 경우)로 설명 할 수 있습니까?

미리 감사드립니다.

답변

1

함수 정의에 전달할 수있는 매개 변수가 없으므로 사용하는 동안 매개 변수가 여러 개 필요합니다. 그렇다면이 함수는 어떻게 작동합니까?

arguments object을 사용합니다.

전화하는 방법은 무엇입니까?

확장 할 오브젝트와이를 확장 할 오브젝트의 수를 전달합니다.

+0

+1. 쿠엔틴 감사합니다. "확장 할 개체를 전달하고 개체를 확장하려면 개체 수를 정교하게 지정할 수 있습니까? pls. 내 질문보기 3 –

관련 문제