Сохранение свойств get и set в вызове с помощью Arguments JSContext cast
Я пытаюсь вызвать функцию в JSContext
от Свифта, используя аргументы от JSValue
список. Проблема, с которой я сталкиваюсь, заключается в том, что если один из JSValues
это словарь, содержащий get
и / или set
свойства, они вычисляются и удаляются во время приведения к [Any]
что требуется для использования .call(withArguments:)
метод. Вот пример ниже. Есть ли способ сохранить эти свойства?
Пример JS Array
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])
но результаты почти одинаковы, так что я предполагаю, что это также вызывает актерский состав. Любые предложения о том, как это может быть исправлено?