【问题标题】:How to call JavaScript class's method from another method? [duplicate]如何从另一个方法调用 JavaScript 类的方法? [复制]
【发布时间】:2017-08-08 18:10:46
【问题描述】:

我正在使用 iOS 的 JavaScriptCore 框架,但我很难让 JavaScript (es6) 类调用另一个方法。这是我的游乐场代码。

do {
    let j = JSContext()!

    j.evaluateScript("class Base123 { method1(arg1) { return this.method2(arg1) } method2(arg1) { return {\"asdf\":\"123\"} } }")
    j.evaluateScript("var b = new Base123(); var handler = b.method1")
    j.evaluateScript("handler(4)")?.toDictionary() //<-- expected ["asdf": "123"]
}

基本上我正在使用两种方法创建一个名为 Base123 的类。方法 1 调用方法 2。但是对 method2 的调用是未定义的。

有人知道怎么做吗?

重新格式化类定义以使其更易于阅读:

class Base123 { 
    method1(arg1) { 
        return this.method2(arg1) 
    } 
    method2(arg1) { 
        return {"asdf":"123"} 
    } 
}

这个 javascript 定义有问题吗?

【问题讨论】:

  • 感谢凯文,我能够通过用闭包包装调用来解决它。 var handler = (arg1) =&gt; b.method1(arg1)

标签: javascript class methods ecmascript-6


【解决方案1】:

尝试将var handler = b.method1 替换为var handler = b.method1.bind(b)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2023-04-09
    • 2013-04-20
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多