SpiderMonkey JS Engine 1.8.5 API를 사용하고 있습니다. 내가 의도적으로 질문을 더 명확하게하는 코드를 단순화SpiderMonkey JS Enginge의 콜백 함수를 호출합니다.
JSBool visit_children(JSContext* cx, uintN argc, jsval *vp) {
JSFunction* function;
if (!JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "f", &function))
return JS_FALSE;
jsval retVal;
JS_CallFunction(cx, JS_GetGlobalObject(cx), function, 0, NULL, &retVal);
return JS_TRUE;
}
:
visitChildren(function() {
log("something");
});
VisitChildren이 같은 것이있다 : 같은
JS 코드가 보인다. 확실히 뭔가 잘못하고있어, 누군가가 * JS_CallFunction * 응용 프로그램을 호출하는 이유를 제안 할 수 있습니까?
UPD1 :
여기 https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JSFunction 일부 모호한 정보를 찾을 수 있지만, 여전히 충돌 : 당신이 원하는 것은 대신 JS_CallFunctionValue
[1]입니다
jsval functionVal = OBJECT_TO_JSVAL(JS_GetFunctionObject(function));
JS_CallFunctionValue(cx, JS_GetGlobalObject(cx), functionVal, 0, NULL, &retVal);
나는 C++을 많이 모른다. 그러나 jsval을 nullptr로 설정하면 어떻게 될까? – fflorent
그렇지 않으면 다음을 참조하십시오. http://dxr.mozilla.org/search.cgi?tree=mozilla-central&request_time=1356890964124&string=JS_CallFunction – fflorent