JSAPI 方法
来源:互联网 发布:linux 启动tomcat 编辑:程序博客网 时间:2024/05/22 11:30
JSAPI
判断类型
JS::RootedValue v(cx, ComputeSomeValue());
bool isString = v.isString();
bool isNumber = v.isNumber();
bool isInt32 = v.isInt32(); // NOTE: internal representation, not numeric value
bool isNull = v.isNull();
bool isBoolean = v.isBoolean();
bool isObject = v.isObject(); // NOTE: not broken like typeof === “object” is :-)
赋值
JS::RootedValue v(cx);
JS::RootedString someString(cx, …);
v.setInt32(0); // or: v = JS::Int32Value(0);
v.setDouble(0.5); // or: v = JS::DoubleValue(0.5);
v.setString(someString); // or: v = JS::StringValue(someString);
v.setNull(); // or: v = JS::NullValue();
v.setUndefined(); // or: v = JS::UndefinedValue();
v.setBoolean(false); // or: v = JS::BooleanValue(false);
获取函数参数列表
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
获取参数
int ret =args.get(0).toNumber();
获取js全局变量
JSObject *global = JS_GetGlobalForObject(cx, &args.callee());
定义一个函数
bool justForFun(JSContext *cx, unsigned argc, JS::Value *vp)
{
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
args.rval().setNull();
return true;
}
if (!JS_DefineFunction(cx, global, “justForFun”, &justForFun, 0, 0))
return false;
创建数组
JS::RootedObject x(cx, JS_NewArrayObject(cx, 0));
创建对象
JS::RootedObject x(cx, JS_NewPlainObject(cx));
执行js代码
JS_EvaluateScript(cx, JS::RootedObject(cx, global),script.c_str(),script.length(),”“,0);
调用全局函数
JS::RootedValue outval(cx);
jsval argv;
if (!JS_CallFunctionName(cx, *G_global, “foo”, JS::HandleValueArray::fromMarkedLocation(0, &argv), &outval))
return false;
返回值给js
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
args.rval().setInt32(23);
return true;
JS::Rooted
JSObject* localObj = JS_GetObjectOfSomeSort(cx);
You should write:
JS::RootedObject localObj(cx, JS_GetObjectOfSomeSort(cx));
JS::Handle
JSObject * someFunction(JSContext cx, JSObject obj) {
// …
}
You should write:
JSObject * someFunction(JSContext *cx, JS::HandleObject obj) {
// …
}
JS::MutableHandle
bool maybeGetValue(JSContext cx, JS::Value valueOut) {
// …
if (!wasError)
*valueOut = resultValue;
return wasError;
}
void otherFunction(JSContext *cx) {
JS::Value value;
bool success = maybeGetValue(cx, &value);
// …
}
You should write:
bool maybeGetValue(JSContext *cx, JS::MutableHandleValue valueOut) {
// …
if (!wasError)
valueOut.set(resultValue);
return wasError;
}
void otherFunction(JSContext *cx) {
JS::RootedValue value(cx);
bool success = maybeGetValue(cx, &value);
// …
}
struct HeapStruct
{
JSObject* mSomeObject;
JS::Value mSomeValue;
};
You should write:
struct HeapStruct
{
JS::Heap
- JSAPI 方法
- JSAPI
- 百度地图jsapi 自定义大头针的方法
- JSAPI Cookbook
- JSApi分享
- ArcGIS 的Server 10 Java 版的jsapi服务的部署方法
- JSAPI-GUIDE翻译
- 微信JSAPI支付
- 微信 jsapi 支付
- 170427 百度地图JSAPI
- 阅读Vue.jsAPI
- 微信jsapi开发
- 常用的jsAPI
- 百度地图jsapi
- 微支付jsapi巨坑 微支付 jsapi java
- 国内免费arcgis jsapi arcgis jsapi国内镜像
- ARCGIS jsapi 添加级别限制
- 最新jsAPI 微信分享
- Cisco Packet Tracer 之 三层交换机使用路由协议实验
- 3sum python 解法
- nim game & single number
- spark submit jars
- Linux养成计划: 用户管理
- JSAPI 方法
- java:截屏并保存为jpg格式
- 思科命令大全
- 通过VGA启动参数来设置屏幕分辨率模式
- 腾讯云公网ip访问不通的问题解决
- BZOJ 4247: 挂饰|动态规划
- [leetcode] 117. Populating Next Right Pointers in Each Node II 解题报告
- 【经验之谈】C3P0或者dbcp连接池报错
- ES6学习——类语法:Symbol.species在实例创建中的应用