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);
}
我正在绘制更复杂的东西,而不是正方形。 但在我尝试使用 Javascript 时,当它编译时,它会在绘制中出现错误,指出 c 为 null,没有方法 lineTo。
Javascript 的方式是什么?
最佳答案
好吧,在 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.操作不是函数
关于作为参数传递的对象的 JavaScript 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44732418/