JavascriptCore中扩展自定义函数

简介: JavaScriptCore中预定义了不少函数,可以直接使用,也可以扩展子定义的函数,我们扩展的自定义函数肯定是在全局访问空间,那么 需要继承JSGlobalObject自定义自己的全局访问空间,或者干脆直接修改也可以 具体来说就是在构造函数中添加下面一句: putDirectFunction(gl...

JavaScriptCore中预定义了不少函数,可以直接使用,也可以扩展子定义的函数,我们扩展的自定义函数肯定是在全局访问空间,那么

需要继承JSGlobalObject自定义自己的全局访问空间,或者干脆直接修改也可以

具体来说就是在构造函数中添加下面一句:

putDirectFunction(globalExec(), new (globalExec()) NativeFunctionWrapper(globalExec(), prototypeFunctionStructure(), 1, Identifier(globalExec(), "print"), functionPrint));

这样就有一个print函数可以访问了 ,而函数的实现则是functionPrint,

定义如下:

JSValue JSC_HOST_CALL functionPrint(ExecState* exec, JSObject*, JSValue, const ArgList& args)
{
    for (unsigned i = 0; i < args.size(); ++i) {
        if (i != 0)
            putchar(' ');
        printf("%s", args.at(i).toString(exec).UTF8String().c_str());
    }
    putchar('\n');
    fflush(stdout);
    return jsUndefined();
}

 

前面的我们都不用考虑,主要是最后一个args,它里面包含了想要的参数,下面是使用示例:

$ jsc.exe
> print(3)
3
undefined
> print(3,4,5)
3 4 5
undefined
>

目录
相关文章
|
8月前
|
索引
鸿蒙开发:了解应用级配置信息
在实际的开发中,如果有共用的资源,建议大家都放到AppScope目录下,对于一些应用级别的信息,比如应用的名字,还有应用的图标,虽然说在Moulde下也可以配置,但是为了更方便的管理,这里比较推荐以AppScope目录下的app.json5为主,当然了,只是推荐,实际当中,两者都可以实现,大家选择其中一种方式即可。
204 12
鸿蒙开发:了解应用级配置信息
|
安全 关系型数据库 MySQL
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
|
算法 图形学
2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 详细数学建模过程
本文详细介绍了2023年第三届长三角高校数学建模竞赛A题的详细数学建模过程,探讨了快递包裹装箱优化问题,提出了三维装箱算法、目标规划和优化策略,旨在减少耗材使用量和优化耗材总体积,同时考虑了货物和耗材的柔性属性。
386 0
2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 详细数学建模过程
|
编解码
nnUNet 详细解读(一)论文技术要点归纳
nnUNet 详细解读(一)论文技术要点归纳
1087 0
|
Ubuntu 安全 关系型数据库
无影云安装mysql
无影云安装mysql
293 0
|
缓存 JSON Android开发
P1-Android基于MVP实现号码归属地查询
零、前言 [1].最近在总结了安卓的知识点,现在来穿插一个小项目,算是对前面的一个小小总结 [2].本案例是以前在慕课网的学习的一个免费课程,代码看不懂的可以去看看:号码归属地查询实用工具 [3].相比与视频课程,本案例按照我的理解,对项目结构进行了优化。
1313 0
|
iOS开发
IOS错误异常一个未知的实例在运行,出现程序崩溃
IOS错误异常一个未知的实例在运行,出现程序崩溃? 建议可以重启Xcode,模拟器,真机的话可以重启是长按重启哦。 接着又出现问题了,可能把描述文件就弄掉了,可以添加,貌似只支持Xcode4.3以上版本的
721 0
|
Java Android开发
eclipse jar java.lang.NoClassDefFoundError
引用:http://www.blogjava.net/anchor110/articles/355699.html Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 1、在工程下新建lib文件夹,将需要的第三方包拷贝进来。
1124 0
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。