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