作为参数传递的对象的 JavaScript 调用方法

标签 javascript oop object

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/

相关文章:

javascript - Vue.js 在计算函数中过滤多维数组

php - 在另一个类中使用包含的类

java - 使用JAVA对象和输入数据进行赋值

javascript - 在保留键的同时打乱对象数组

javascript - <embed> 或 <object> 标记视频播放错误处理程序 - JavaScript

javascript - 将 "data-hover"添加到 Wordpress 菜单项

c# - 干净的领域驱动设计(DDD)是乌托邦吗?

Javascript 对象自定义函数

java - 每个 session 多个对象与单个对象

Javascript正则表达式,循环中的变量带有转义字符