기능은 이 이름이없는이 조각은, 그것은 익명입니다. profile
에 할당 된 속성에는 이름 (edit
)이 있지만 기능은 없습니다. 아니요, 함수 개체에서 edit
또는 profile.edit
또는 Cube.profile.edit
을 얻을 수있는 방법이 없습니다.
당신은 함수의 이름 부여 할 수 있습니다 :
Cube : {
profile: {
edit : function edit(){
alert(arguments.callee.name);
}
}
}
을 ...하지만 IE8에 two separate function objects 및 이전 버전을 만들 것입니다 라는 이름의 함수식을 사용하고.
또한이 작업을 수행 할 수 있습니다
Cube : {
profile: {
edit : Cube_profile_edit
}
}
// ...
function Cube_profile_edit(){
alert(arguments.callee.name);
}
그러나, 위의 두 가지 문제 모두에 :
을 당신은 브라우저의 많은에 모두 매우 느립니다 arguments.callee
를 사용하는 이며 strict mode에는 유효하지 않습니다.
name
기능 개체의 속성이 비표준이므로 this answer은 Function#toString
의 결과를 구문 분석해야 할 필요가 있다고 말합니다. 문제는 Function#toString
이 이고 또한이 아닌 것입니다 (그러나 모바일 브라우저를 제외하면 상당히 광범위하게 지원됨). 그런 다음 기능을 실제 이름을주고하지 않는
당신은 함수에 참조하는 속성에 대한 Cube
객체 그래프를 통해 검색하여 그 두 번째 문제를 피할 수 있지만, 여전히 arguments.callee
를 사용하여 필요 (실시간 것을 사용 이름으로 검색 할 때 속성 경로를 찾습니다).
함수의 이름을 지정할 수 있습니다. edit : function edit() {...}' – elclanrs
@Osiris이 질문을 읽습니다. 하지만 나는 내 대답을 얻지 못했습니다. 'alert (arguments.callee.name);'위의 코드 예제에서는 작동하지 않습니다. –
@elclanrs : Internet Explorer 8 이하 버전에서는 [두 가지 기능] (http://blog.niftysnippets.org/2010/09/double-take.html)이 만들어집니다. –