2016-02-27 52 views
0

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

回答

1

在C++中,您只需创建自己应该从构造函数返回的对象。 (Nothing创建了一个可从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; 
} 
相关问题