JavaScript 新手。我正在尝试调用作为参数传递给另一个方法的对象的方法。我不断收到参数为空或参数没有名为 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 的尝试中,当它编译时,它在 draw 中得到一个错误,即 c 为空,没有方法 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.operation is not a function
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句