2012-09-28 2 views
0

는 내가 default_arguments 모두 덮어하지

$.extend(function_arguments, defaults_arguments)

처럼 시도하십시오. 예를 들어, 그 중 하나가 함수 (this) 인 경우 function_arguments의 유형이 다른 유형 인 경우 객체에 남아 있습니다. ...

$ .extend는 정확히 무엇을합니까? array_merge처럼 작동하지 않아야하지만 객체에 대해 작동해야합니까?


좋아, 더 명확하게하기 위해 : 나는 "foo는"에 대한 기본 값을 얻을 어떤 이유로

....function(args){ 


    $.extend(args, { 
    // here are defaults 
    foo: this, 
    abc: 1 
    }); 

} 

, 나는 그것을 내부 인수를 경우에도 ...

나는 경우,

....function(args){ 


    $.extend({ 
    // here are defaults 
    foo: this, 
    abc: 1 
    }, args); 

} 

args에서 속성 만 가져 오면 기본값이 완전히 누락됩니다. |

+0

질문에있는 코드에서,'defaults_arguments'를 사용하여'function_arguments'를 확장하는 것처럼 보입니다. 당신은'$ .extend ({}, defaults_arguments, function_arguments)'를 목표로하지 않겠습니까? –

+0

이 링크는 역학의 근원과 설명을 가지고 있습니다 : http://www.blog.highub.com/javascript/decoding-jquery-objects-inherit-from-objects/ – asawyer

+0

@ FrédéricHamidi 왜 처음'{}'이 필요한가요? –

답변

0

JQuery와 문서에 대한 완벽한 예를있다 : jQuery.extend

1

(수정되었는데 작동하지 않습니다.) 이후의 지정된 객체가 동일한 속성을 가지고있는 경우에만 속성을 덮어 씁니다. 함수는 또한 재귀 적이 지 않습니다 (개체의 개체 속성의 속성이 열거되고 병합되지 않습니다). 원하는만큼 많은 개체 속성을 첫 번째 개체에 결합 할 수 있습니다. 이러한 여러 개의 세 번째, 네 번째 등의 인수는 단순히 첫 번째 개체에 포함시키려는 다른 개체입니다.

이 시도 :

$.extend(args, foo:this, bar:123); 
2

귀하의 .extend 거꾸로입니다. 기본값은 이고 처음에는입니다.

+0

을 수행하면 console.log를 수행 할 때 주어진 인수 만 오브젝트 내부에서 볼 수 있습니다. – Alex

+0

이것이 맞습니다. '$.extend는 첫 번째 인수를 수정합니다. [피들] (http://jsfiddle.net/ult_combo/BDgkW/) –