2017-06-24 17 views
0

JavaScriptを備えています。私は別のメソッドに引数として渡されたオブジェクトのメソッドを呼び出そうとしています。引数がnullであるか、引数にxという名前のメソッドがないというエラーが発生し続けます。あなたが代わりに広場のこの引数として渡されたオブジェクトのJavaScript呼び出しメソッド

public class Context 
{ 
    public void moveTo(int x, int y) {...} 
    public void lineTo(int x, int y) {...} 
} 
public class Square 
{ 
    public void draw(Context c, int x, int y) { 
    c.moveTo(x,y); 
    c.lineTo(x+10,y+5); //etc 
    } 
} 
public class Design 
{ 
    ctx = new Context(); 
    s = new Square(); 
    s.draw(ctx,5,10); 
} 

を行うことができますC#のような強く型付けされた言語で

、私はより複雑なものを描いています。 しかし、Javascriptでの私の試みでは、コンパイル時に、cがnullであり、メソッドlineToを持たない描画でエラーが発生します。

これを行うためのJavascriptの方法は何ですか?

+4

ショー。 – mkaatman

答えて

1

まあ、JavaScriptであなただけのことを行うことができます:あなたは空のオブジェクト({})を渡した場合

let sum = { 
    operation: (a, b) => a + b 
}; 

let minus = { 
operation: (a, b) => a - b 
}; 

let obj = { 
applyOperation: (obj, a, b) => obj.operation(a, b) 
}; 

obj.applyOperation(sum, 1, 2); // => 3 
obj.applyOperation(minus, 1, 2); // => -1 

あなたは次のようになり、その場合には、TypeError例外を受け取ります何かのように:TypeError: obj.operation is not a function

0

エルトンが正しいです。私の問題は、Cのようにjavascriptが許すif文構文(私はCの回避に慣れていました)とChromeのデバッグに慣れていないことです。これは実行時エラーではなくコンパイルエラーです。

実際のエラーメッセージがされたこと:あなたが働いていなかったJavaScriptで試してみました何

Uncaught TypeError: Cannot read property 'moveTo' of null 
関連する問題