JavaScript新手。我试图将一个对象的方法作为参数传递给另一个方法。我不断得到参数为null或参数没有名为x的方法的错误。
在像c#这样的强类型语言中你可以这样做
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);
}
而不是Square,我画了一些更复杂的东西。 但是在我尝试使用Javascript时,当它编译时会在绘制中得到一个错误,即c为null,没有方法lineTo。
这样做的Javascript方式是什么?
答案 0 :(得分: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
答案 1 :(得分:0)
该实际错误消息为:
Uncaught TypeError: Cannot read property 'moveTo' of null