javascript - 如何使用 SpiderMonkey API 实现闭包?

标签 javascript c spidermonkey

我一直在使用 SpiderMonkey C API,并希望使用他们的 API 在 C 中实现闭包。我想实现的那个相当复杂,但我什至不知道如何做一个简单的,例如:

function x() {
   var i = 0;
   return function() { i++; print(i); };

}

var y = x();
y(); //1
y(); //2
y(); //3 

我想知道是否有人知道我该怎么做。我找到了 JS_NewFunction 方法,但实际上我不知道这是否是朝着正确方向迈出的一步。任何帮助将不胜感激,谢谢!

最佳答案

我不知道是否有纯 C 的闭包方式。不过,如果可以的话,我建议只在 javascript 中实现所需的功能,并简单地评估 JSAPI 中的 javascript 文本。从那里,使用 JSAPI 获取实现主机功能所需的任何句柄/变量。使用 JSAPI 做 javascripty 的事情真的很繁重,如果可以的话请避免它。

关于javascript - 如何使用 SpiderMonkey API 实现闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527100/

相关文章:

javascript - 预期的不合格 ID cstdlib

javascript - 使用默认值进行级联选择

javascript - 将属性设置为最后一个位置

c - glibc/realloc/无效指针

c - 如何在多个c文件中共享一个结构体变量

c++ - 将 C++ 程序与 SpiderMonkey 链接?

javascript - nicedit 所见即所得编辑器 + 字符计数

javascript - 如何将字符串/标题中的最后三个单词换行

c - 为什么速度返回零?在C中

javascript - 蜘蛛猴壳。是否可以动态加载共享库?