在nashorn中按名称动态访问字段

时间:2018-07-25 12:30:40

标签: javascript java-8 nashorn

我正在尝试动态访问Java脚本对象的字段。

假设我有一个字符串对象,并且想获得对其endsWith方法的引用。

如果我只使用['endsWith'],它可以正常工作:

jjs> var str = 'some string'
jjs> str['endsWith']
[jdk.internal.dynalink.beans.SimpleDynamicMethod boolean java.lang.String.endsWith(String)]
jjs> str['endsWith']('string')
true

但是,如果我先将名称放在另一个变量中,那么它将不起作用:

jjs> var str = 'some string'
jjs> var name = 'endsWith'
jjs> str[name]
jjs> str[name]('string')
<shell>:1 TypeError: str[name] is not a function
jjs> typeof str[name]
undefined

我检查了nodejs和firefox控制台,在两种情况下都可以正常工作。

我使用Java 8:

$ jjs -version
nashorn 1.8.0_144

我如何使其起作用?

0 个答案:

没有答案