我正在尝试使用JSContext
列表中的参数快速调用JSValue
中的函数。我面临的问题是,如果JSValues
中的一个是包含get
和/或set
属性的字典,则在将这些属性强制转换为[Any]
时将这些属性计算并删除必须使用.call(withArguments:)
方法。这是下面的例子。有没有办法保留这些属性?
JS数组示例
var t = {xStore: 0, get x() { return this.xStore; }, set x(value) { doStuff(); this.xStore = value } };
var argumentsArray = [t];
在Swift中投放时的结果
argumentsAsJSValue.toArray()
[{x = 50; xStore = 50; }]
因此,当我使用JSValue.call(withArguments: [Any])
时,doStuff()
上的set
方法调用不会被传递,因此在函数调用中设置x时将不会执行。这对于我的用例来说是有问题的,如果我只传递实际的JSValue
而不是强制转换,那会更好。我也尝试过进行JSValue.call(withArguments: [JSValue])
,但是结果几乎相同,所以我猜想这也会引起转换。关于如何解决此问题的任何建议?