2017-09-15 5 views
0

이러한 종류의 호출에 대한 디스패처로 단일 duktape/C 생성자 함수를 사용하고 싶습니다. 디스패처 함수가 호출 될 때 나는이 클래스가 적절한 C++ 생성 함수를 호출하는 데 필요한 클래스를 알아야합니다.duktape에서 생성자 함수를 실행할 때 클래스 이름을 얻는 방법은 무엇입니까?

바인딩은 아직 작성되지 않은 JS 객체를 나타내므로 도움이되지 않을 것입니다.

또 다른 옵션은 현재 함수이지만, 문서에서 클래스 이름을 가져 오는 방법을 볼 수 없습니다. 그 밖의 무엇을 사용할 수 있습니까?

답변

0

"클래스 이름"의 의미를 자세히 설명해 주시겠습니까? '새'타겟으로 사용되는 Ecmascript 함수 객체의 .name 속성을 의미합니까?

을 사용하면 현재 호출이 생성자 호출인지 확인한 다음 duk_push_current_function()을 사용하여 Ecmascript 생성자 함수 개체에 액세스 한 다음 일반 속성 API 호출을 사용하여 해당 속성을 읽을 수 있습니다. 예를 들어, "클래스 이름"으로 함수 객체의 .name을 의미한다면 duk_get_prop_string()을 사용하여 "name"속성을 읽었을 것입니다.

+0

나는 그런 자산이 있는지 확신 할 수 없었습니다. 불행히도, 저는 현재 다른 것에 집중하고 있습니다. 그래서 이것을 시험해 보지 않았습니다. 그러나 당신의 제안은 합리적으로 들립니다. –

+0

duk_push_c_function()으로 생성 된 함수 객체는 자동으로'name' 속성을 갖지 않지만 수동으로 설정할 수 있습니다 (이 경우에는 그렇게해야합니다). Ecmascript 코드에서'function foo() {...}'로 생성 된 함수 객체는 자동으로'.name' 속성을 갖습니다. –

+0

그래, 그게 내가 결론을 내린 것이다. –