可以用SpiderMonkey用C ++编写JS Object的构造函数吗?

时间:2016-02-27 16:40:33

标签: spidermonkey

我想使用SpiderMonkey 38的API在C ++中实现Javascript对象的构造函数。但是构造函数需要访问this(正在构造的JS对象),JS::CallArgs的文档说你不能从构造函数中调用thisv(),而不建议任何替代方法。这是否意味着实际上不可能在C ++中编写有用的构造函数?

1 个答案:

答案 0 :(得分:1)

在C ++中,您只需创建应该自己从构造函数返回的对象。 (没有什么可以创建一个可以从this访问的初始对象)根据您的需要,您应该考虑为该对象创建一个新的JSClass。

bool
MyConstructor(JSContext* cx, unsigned argc, JS::Value* vp)
{
  CallArgs args = CallArgsFromVp(argc, vp);

  JS::RootedObject obj(cx, JS_NewObject(cx, MyJSClass));
  if (!obj)
    return false;

  args.rval().setObject(*obj);
  return true;
}