如何从另一种方法调用JavaScript类的方法?
问题描述:
我正在使用iOS的JavaScriptCore框架,但我很难得到一个JavaScript(es6)类来调用另一种方法。这是我的游乐场代码。如何从另一种方法调用JavaScript类的方法?
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的类。 method1调用method2。然而,对method2的调用是未定义的。
有谁知道如何做到这一点?
重新格式化类的定义,使之更易于阅读:
class Base123 {
method1(arg1) {
return this.method2(arg1)
}
method2(arg1) {
return {"asdf":"123"}
}
}
有什么不对的JavaScript的定义是什么?
答
尝试用var handler = b.method1.bind(b)
代替var handler = b.method1
。
感谢凯文,我能够通过封闭封装来解决它。 'var handler =(arg1)=> b.method1(arg1)' – DerrickHo328