在Swift中,如何调用JSContext.callWithArguments返回的Jscript对象的方法

In Swift, how to invoke method of Jscript object returned by JSContext.callWithArguments

我是 javascript 和 Swift 的新手。我正在编写一个 IOS 应用程序,它使用 JavaScript核心调用 javascript 函数,returns 对象。然后我如何使用 JavaScriptCore 调用返回对象的方法。

例如(我实际上并没有使用矩形),JavaScript 可能如下所示:

function Rectangle(l,w) {
    this.l = l
    this.w = w

    function area() {
        return l * w
    };
}

function getRectangle(l,w) {
    return new Rectangle(l,w)
}

然后,在调用 jsContext.evaluateScript(jsScriptSource) 之后,Swift 获取矩形对象的调用可能如下所示

var getRectangle = self.jsContext.objectForKeyedSubscript("getRectangle")
var rectangle: JSValue = getRectangle.callWithArguments([11,5])

然后如何调用返回矩形的 getArea 方法?

谢谢

很简单,对返回值使用invokeMethod方法:

let result = rectangle.invokeMethod("getArea", withArguments: [])

您还需要修复 javascript 才能正常工作:

function Rectangle(l,w) {
  this.l = l
  this.w = w

  this.getArea = function area() {
    return l * w
  };
}