【问题标题】:Can a JS Object's constructor be written in C++ with SpiderMonkey?可以用 SpiderMonkey 用 C++ 编写 JS 对象的构造函数吗?
【发布时间】:2016-02-27 16:40:33
【问题描述】:

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

【问题讨论】:

    标签: spidermonkey


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 2021-09-14
      • 2014-05-22
      • 2022-11-29
      相关资源
      最近更新 更多