Android JS解析引擎 Rhino 使用笔记(不借助webview),阿里正式启动2024届春季校招

   日期:2024-12-25     作者:xhb273511      
核心提示:5455565758596061使用测试 1234567891011121314结果输出如下: 12 方法测试 - 返回本地类 添加本地测试类 123456789为JSEn
  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

使用测试

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

结果输出如下

  • 1

  • 2


方法测试 - 返回本地类

  1. 添加本地测试类

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  1. 为JSEngine添加方法 getObjectValue

  • 1

  • 2

  • 3

  • 4

  1. allFunctions 添加 getObjectValue 声明

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  1. 修改执行语句,尝试获取 name属性的值

  • 1

  • 2

  • 3

  1. 运行,发现无法获取到属性name的值

  • 1

解决方案

思路:先将返回的对象转成字符串,再利用 javascript 的 eval 函数将字符串转成符合要求的对象

此时,需要修改 JSEngine 中的getObjectValue方法和 allFunctions 中的 getObjectValue 方法

  • 1

  • 2

  • 3

  • 4

  • 5

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

仍执行以下语句

  • 1

  • 2

  • 3

输出如下:可以看到能使用 .name 的形式获取到 name属性的值

  • 1

  • 2

反射构建js语句

通过上面可以看到,在JSEngine中每添加一个方法,在JS语句中也要对应多添加一个方法。而在js语句的编写过程中则需要注意多处细节,比较容易书写错误,所以能否自动生成js语句而不用每次都手写呢

有的,利用注解和反射。

首先观察前面的js语句

每个本地方法在js中的定义主要包括两部分

1、通过本地方法的方法名来获得该方法

  • 1

2、自定义js方法(可重新命名,在js方法中调用本地方法的引用

  • 1

  • 2

  • 3

其他有差异的话则在于返回值类型为本地类对象时候的js方法的不同,如

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

下面开始反射构建js语句

1、创建注解 JSAnnotation ,设定参数 returnObject ,用于区分上面所述的方法是否返回本地类对象。

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

2、为方法添加注解

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

3、利用注解生成js语句

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50


js自动生成的完整封装

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-00jBAp9g-1710757508052)]
[外链图片转存中…(img-WXIjr2Uw-1710757508053)]
[外链图片转存中…(img-07R5UnKY-1710757508053)]
[外链图片转存中…(img-w61MzYLO-1710757508054)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取(备注:前端
[外链图片转存中…(img-0WE4sUuK-1710757508055)]

结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

     本文地址:http://w.yusign.com/tjnews/2145.html    述古往 http://w.yusign.com/static/ , 查看更多
 
标签: 方法
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0
 
更多>同类生活信息

相关文章
最新文章
推荐文章
推荐图文
生活信息
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号