javascript - 在 JavaScript 中提升对象

标签 javascript class object

所以我有一个类和另一个扩展第一个类的类。 我想知道是否可以从 JavaScript 中的第一个类提升扩展类。

class Class1 {
  constructor(data) {
    this.var1 = data.var1
    this.var2 = data.var2
  }
}

class Class2 extends Class1 {
  constructor(o) {
    this = o
    this.var3 = '!!!'
  }
}

const o = new Class1({var1: 'HELLO', var2: 'WORLD'})
const o2 = new Class2(o)

console.log(o2.var1)
console.log(o2.var2)

我知道 this = o 会抛出错误。但是有没有一种方法可以完成任务,而不必将旧对象中的每个字段分配给新对象?

最佳答案

您可以使用super()函数:

class Class1 {
  constructor(data) {
    this.var1 = data.var1
    this.var2 = data.var2
  }
}

class Class2 extends Class1 {
  constructor(o) {
    super(o)
    this.var3 = '!!!'
  }
}

const o = new Class1({var1: 'HELLO', var2: 'WORLD'})
const o2 = new Class2(o)

console.log(o2.var1) // -> HELLO
console.log(o2.var2) // -> WORLD

有关 super() 的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super

关于javascript - 在 JavaScript 中提升对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48407553/

相关文章:

javascript - 如何避免大型 HTML 表格中的文本分页(打印/PDF)?

javascript - 是的架构。如何仅验证 Yup Schema 中数组的第一个元素

javascript - 如何循环使用 Google Maps API 旅行模式

javascript - 隐藏详细信息时 DataTables 插件不起作用

php类在函数内调用函数

python - 在另一个类的类函数中使用变量(python)

java - 如何设置一个类对另一个类可见?

javascript - 使用 Javascript 检查 JSON 对象是否包含值

java - Java 中的对象导航

javascript - Angular 和覆盖 - 打开 |离开