簡體   English   中英

如果存在相同的參數名稱,如何向 class 構造函數添加新屬性?

[英]How to add new properties to class constructor, if there are exist same param names?

我正在嘗試制作 object: Cube { length: 1, surfaceArea: 6, volume: 1 } 但它現在可以工作了,因為 class 具有相同的參數。 如果我刪除“set surfaceArea ...”,構造函數會起作用。 我需要一個 class,它可以分配兩個參數,如果你有另一個的話。 所以我堅持第一步。 `

class Cube {
  constructor(length) {
    this.length = length;
    this.surfaceArea = length ** 2 * 6;
    this.volume = length ** 3;
  }
  set surfaceArea (value) {

  }
  get surfaceArea () {

  }
  set volume (value) {

  }
  get volume () {

  }
}
var cube = new Cube(1);
console.log(cube)

`

如何構建這個 class。

你所擁有的問題是你有什么都不做的設置器和什么都不做的吸氣器。 所以this.surfaceArea = ___是一個空操作,如果您從surfaceArea屬性讀取,您將始終得到undefinedsurfaceArea getter 的隱式返回值)。 (這兩者對於volume也是如此。)

您必須:

  • 將值存儲在某處,或者
  • 在 getter 中執行計算

如果您決定將值存儲在某處,您有幾個存儲位置的選項:公共屬性或私有字段 您還需要將length設置為訪問器屬性而不是像現在這樣的數據屬性,否則為length分配不同的值會使您的surfaceAreavolume不正確。 (這樣做意味着你需要一個地方來存儲length ,因為如果length屬性本身是一個訪問器,你需要在其他地方保存它的當前值。)

如果您決定在每次訪問surfaceAreavolume時都進行計算,請刪除它們的 setter 並且不要在構造函數中分配給surfaceAreavolume (因為它們完全是動態的,從length派生)。

我故意不在此答案中包括代碼,因為我懷疑這是某種 class 作業或類似的作業,期望您編寫代碼。 因此,我將指導您如何做到這一點。 更多相關信息: 我如何提問和回答家庭作業問題?

暫無
暫無

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

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