如何修改作为参数传递给在 JSContext 中执行的 javascript 的 swift 对象
我正在玩 JSCore 并声明了一个 testClass,我正在制作这个类的一个实例,然后调用一个 javascript 函数,将我的实例作为参数传递
import JavaScriptCore
import Foundation
let jsVM = JSVirtualMachine()
let jsContext = JSContext(virtualMachine: jsVM!)
@objc public protocol testJSExports : JSExport {
var number: NSNumber? {get set}
}
@objc(testClass) class testClass : NSObject, testJSExports {
public dynamic var number: NSNumber?
}
jsContext?.evaluateScript("""
function modifyNumber(testInstance) {
testInstance.number = -2
}
""")
let jsFunction = jsContext?.objectForKeyedSubscript("modifyNumber")
var testInstance = testClass()
testInstance.number = 11
jsFunction?.call(withArguments: [testInstance as Any])
print(testInstance.number) // would expect to print -2, actually prints 11
我希望最后一个打印语句的输出为 -2,但原始值 11 仍然存在。是否可以在 javascript 中修改 swift 对象?