Сохранение свойств 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]) но результаты почти одинаковы, так что я предполагаю, что это также вызывает актерский состав. Любые предложения о том, как это может быть исправлено?

0 ответов

Другие вопросы по тегам