2011-11-14 5 views
28

대부분의 사이트에서는 Function.arguments의 속성 인 "callee"가 더 이상 사용되지 않습니다. 그러나 일부 사이트는 더 나아가 Functions.argument 전체가 더 이상 사용되지 않는다고 말합니다. http://aptana.com/reference/api/Arguments.html 전체 루틴이 물에서 죽은 경우에만 왜 피 호출자를 언급해야합니까? 난 단지 "인수"발견은 매우 유용 예컨대을 보인다 http://hungred.com/how-to/secret-arguments-array-javascript/Javascript : 인수 배열이 사용되지 않습니다.

답변

44

Function.arguments이되지 수 있지만 함수 내에서 사용할 수 바닐라 arguments 객체에 찬성되지 않는 것. (예 : x = theFunc.arguments[i]; 대신 x = arguments[i];을 사용)

수신 된 서수 인수에 액세스하기위한 바람직한 방법입니다.

+0

아, 설명해주세요! 많은 감사합니다. –

+0

이것은 의미가 있습니다. Javascript가 멀티 스레딩을 원할 경우 전역 상태 저장 객체가 죽습니다. –

+0

'Function.arguments'는 왜 사용되지 않습니다? 이 함수를 사용하면 중첩 함수 내부에있는 부모 함수의 인수에 직접 액세스 할 수 있습니다. 이것은'arguments' 객체로 할 수없는 것입니다. – Taurus

1

callee는 더 이상 사용되지 않지만 인수는 많은 응용 프로그램에서 사용됩니다. 인수가 사용되지 않는지 모르겠습니다. 함수 (params) 내에 정의되지 않은 경우에도 함수의 모든 매개 변수를 가져올 수 있습니다.

대부분 jQuery 플러그인을 개발할 때 사용했습니다. 같은 뭔가 :

$.fn.tooltip = function(method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on jQuery.tooltip'); 
    }  
    }; 

당신이 유일한 방법은 매개 변수로 전달됩니다,하지만 첫 번째 내에서 인수가 첫 번째 값 이후에 분할되어있는 경우에서 볼 수 있듯이. 이 방법으로 함수 이름과이 함수가 사용하는 모든 매개 변수를 전달할 수 있습니다.

전체 예 : http://docs.jquery.com/Plugins/Authoring

1

아니오, 인수 배열이 사양의 최신 5.1 버전에서 사용되지되지 않았습니다 (60 페이지 참조). 그러나 caller 객체는 코드가 엄격 모드에 있지 않은 경우에만 사용할 수 있습니다.

관련 문제