在使用Arguments JSContext cast进行的调用中保留get和set属性

时间:2018-07-12 06:26:11

标签: javascript ios swift jsvalue

我正在尝试使用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]),但是结果几乎相同,所以我猜想这也会引起转换。关于如何解决此问题的任何建议?

0 个答案:

没有答案