spidermonkey如何调用JS自定义函数

OSC首席过客 发布于 2014/04/10 22:26
阅读 554
收藏 0

@尾鱼头 你好,想跟你请教个问题:

以下代码少了那些导致无法调用JS函数?

vc++

JSRuntime *runtime; 
    JSContext *context; 
    JSObject *global; 

	 // 创建新的运行时 8M 
    runtime = JS_NewRuntime(8L * 1024L * 1024L); 
    if (runtime == NULL){ 
        return -1; 
    } 

	 // 创建新的上下文
    context = JS_NewContext(runtime, 8*1024); 
    if (context == NULL){ 
        return -1; 
    } 

	 // 
    JS_SetOptions(context, JSOPTION_VAROBJFIX); 
    // 设置错误回调函数 , report_error 函数定义如上
	 JS_SetErrorReporter(context, report_error); 

	 // 创建一个新的 JavaScript 对象
    global = JS_NewObject(context, &global_class, NULL, NULL); 
    if (global == NULL){ 
        return -1; 
    } 

	 // 实例化 global, 加入对象,数组等支持
    if (!JS_InitStandardClasses(context, global)){ 
        return -1; 
    } 

jsval res;
JSObject *global = JS_GetGlobalObject(context);
jsval argv[2];
JSScript *script;
JSString *jss;
//new 2 number to pass into the function "add" in script 
JS_NewNumberValue(context, 18.5, &res);
argv[0] = res;
JS_NewNumberValue(context, 23.1, &res);
argv[1] = res;
JSBool status=JS_CallFunctionName(context, global, "add", 2, argv, &res);
jsdouble d;
JS_ValueToNumber(context, res, &d);
printf("add result = %f\n", d);



JS:

function add(x, y){ 
    return x + y; 
 } 

加载中
返回顶部
顶部