我创建了一个java类来实现graal proxyobject接口。我可以通过访问该类的所有方法和属性 hasMember(String key)
以及 getMember(String key)
方法。但如果我用
myObject[Symbol.iterator]();
我有个例外:
org.graalvm.polyglot.PolyglotException: TypeError: myObject[(intermediate value).iterator] is not a function
问题是myobject[symbol.iterator]返回未定义的。如何通过符号…访问代理对象的成员。。。?
1条答案
按热度按时间lmvvr0a81#
这在java端是不可能的。polyglot互操作协议只接受
String
钥匙(参见getMember(String key)
你引用上面的话),但是Symbol.iterator
是一个javascriptSymbol
. 你得想个特别的案子。这取决于你的proxyobject做了什么-它最终是否委托给了一个javascript对象,而这个对象确实理解什么Symbol.iterator
是?然后你可以传递一些神奇的字符串并适当地委托。当前javascript互操作代码总是返回
undefined
对于图案interopObject[Symbol]
. 你得在打电话之前就知道情况myObject[Symbol.iterator]
,因为这永远不会到达你的ProxyObject
.最好的,克里斯蒂安