2013-09-27 2 views
4

이것은 jQuery에서 항상 볼 수 있으며 어떻게 처리하는지 궁금합니다. 나는 박쥐 당신에게 예를 들어주지 :에서동적 인수 배열을 사용하여 메소드/함수 생성?

jQuery의 세 가지 유형 인수의 조합에 넣을 수 있습니다 fadeIn() 애니메이션 : 같이

.fadeIn([duration ] [, complete ]); 
.fadeIn(options); 
.fadeIn([duration ] [, easing ] [, complete ]); 

, 서로 다른 인수와 순서에 넣을 수 있습니다 중요하지 않다. fadeIn() 메서드처럼 이러한 인수를 수락하고 적절하게 처리하는 적절하거나 실용적인 방법은 무엇입니까? 나는 거의 같은 방식으로 인자를 다룰 플러그인을 만들고있다.

고맙다.

+3

당신이보고 될 것이다 [인수] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments) –

답변

3

한 가지 방법은 arguments을 사용하는 것입니다 제거 오해합니다. 모든 함수는 범위에 arguments 변수를 가지며 서명에 관계없이 함수에 전달 된 모든 인수를 포함합니다. 예를 들어 :

a = function() { console.log(arguments); }; 
a(); // [] 
a(1,2,3,4); // [1, 2, 3, 4] 

그래서, 당신은 사용자가 함수를 호출하는 방법을 확인 typeof과 함께이를 사용할 수 있습니다. 예 :

foo = function() { 
    if(typeof(arguments[0]) == 'function') { 
     // do something 
    } else if(typeof(arguments[0]) == 'object') { 
     // do something else 
    } 
}; 

foo(function() { return 'hi'; }); 
foo({foo: 'bar'}); 
// both will do something 
-1

자바 스크립트 개체의 모든 매개 변수를 전달한다고 생각합니다.

당신은 당신이 그것을 사용하는 방법을

function foo(params) { 
    if(params['attr1'] != null) { 
     // use it 
    } 

    if(params['attr2'] != null) { 
     // use it 
    } 

    ... 
    // so on 
} 

업데이트 자세한 내용은 같은 객체 속성에 바로 액세스, 뭔가 필요합니다. 뭔가 당신이 날

params = {callback: callbackFunctionName OR functionCode, attr1: someValue ... } 

// now just call it 
foo(params); 
// and you have your callback in params['callback'] 
// ofcouse you should review its type 
// you have params['attr1'] = someValue 
// inside your foo.