2014-07-08 1 views
0

을 JavaScript에 넣으면 변수 arguments (현재 함수의 모든 인수를 얻을 수 있음)은 Array이 아니지만 콘솔에 유형이 Arguments이라고 표시됩니다.JavaScript에서 Arguments 클래스를 참조하는 방법은 무엇입니까?

당신은 단순히 Arguments (당신이 예를 들어 String처럼.), 그래서 그것의 참조가 좋아 얻을 입력하여이 클래스를 얻을 수

:

Arguments = function(){return arguments.constructor;}(); 

그래서는 다음과 같이 확인 입력 할 수 있습니다

function foo() { 
    bar = arguments; 
} 
foo(); 
bar instanceof Arguments; 

Arguments 개체를 직접 참조 할 수 있습니까? (이전 스 니펫에서와 같이 생성하지 않고)

Ps .: 제가 연구하고있는 프로젝트는 디버깅을 목적으로 한 유형 검사 시스템입니다. MyClass.fileds = {speed: Number, color: String}과 같은 객체 변수에 대해 유형을 할당 할 수 있습니다.이 유형은 할당 될 때 검사됩니다. 그리고 나는 Arguments 객체를 사용하여 주위를 돌아 왔고, 단지 {args: Arguments}으로 작성하면 좋을 것입니다.

+2

"왜 그런지 묻지 말고 ..."- XY 문제처럼 보입니다. 왜 그렇게하고 싶습니까? – elclanrs

+0

나는 더 나은 질문은 무엇이라고 생각 하는가? "당신은 직접 인수 객체를 참조해야한다." 그 대답은 더 나은 접근 방식을 허용합니다 – Gabs00

+0

배열로 가져야 만한다면'[] .slice.call (arguments)'할 수 있지만 그렇게해서는 안됩니다. – adeneo

답변

1

Arguments 클래스가 없습니다. 당신은 단지 Object 생성자 인 Arguments 변수 :

function(){return arguments.constructor;}() === Object 

arguments 객체는 Object.prototype에서 상속 일반 객체입니다. 부적 절한 모드에서 인덱스 된 속성은 명명 된 매개 변수 변수에 대한 setters/getter이지만 그 외의 일반 개체는 its internal [[Class]] value입니다.

Arguments에만 확인 하시려면 instanceof 확인을 하시려면 How do I check whether an object is an arguments object in JavaScript? 질문을 보셔야합니다.

+0

차가움. 고맙습니다. –

관련 문제