繁体   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