2017-08-08 11 views
-1

私は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"] 
} 

私は基本的に2つの方法でBase123というクラスを作成しています。 method1はmethod2を呼び出します。ただし、me​​thod2の呼び出しは未定義です。

誰でもこれを行う方法を知っていますか?読みやすくするために、クラス定義を再フォーマット

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

はこのjavascriptの定義に何か問題はありますか?

+0

ありがとうKevin、私はクロージャで呼び出しをラップすることで解決できました。 'var handler =(arg1)=> b.method1(arg1)' – DerrickHo328

答えて

-2

var handler = b.method1.bind(b)var handler = b.method1を交換してみてください。

関連する問題