You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MuJS的Native方法中如何获取第二个函数参数的引用?

解决MuJS中获取函数参数引用的问题

你的问题核心在于js_tovalue仅返回栈中指定位置值的指针,不会将该值推送到栈顶,而js_ref只能获取当前栈顶值的引用。只需调整栈操作逻辑,就能正确拿到第二个参数的函数引用:

修正后的C++代码:

void Natives::on(js_State* js) {
    const char* event = js_tostring(js, 1);
    
    // 将第二个参数(传入的函数)推到栈顶
    js_get(js, 2);
    // 此时栈顶是目标函数,调用js_ref获取引用
    const char* ref = js_ref(js);
    
    // 后续可将ref存储,用于后续调用该函数
}

关键说明

  • js_get(js, 2):把栈中第2位的参数(即传入的回调函数)复制一份推到栈顶,让js_ref能捕获到它的引用。
  • 若后续需要操作该函数值,可通过js_tovalue(js, -1)获取栈顶值的指针(此时栈顶就是目标函数)。
  • 记得在不再需要该引用时,调用js_unref(js, ref)释放资源,避免内存泄漏。

内容的提问来源于stack exchange,提问作者Bork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:11:15