我正在尝试动态访问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
我如何使其起作用?