簡體   English   中英

作為參數傳遞的對象的JavaScript調用方法

[英]JavaScript call method of object passed as argument

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進行編譯時,它在draw中遇到一個錯誤,即c為null,沒有方法lineTo。

用Java腳本執行此操作的方式是什么?

好吧,在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

埃爾頓是正確的。 我的問題是JavaScript允許的if語句語法(類似於C)的賦值(我已經習慣於C#預防這種情況)以及不熟悉Chrome調試,因為它是運行時錯誤而不是編譯錯誤。

該實際錯誤消息是:

Uncaught TypeError: Cannot read property 'moveTo' of null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM