【问题标题】:How to Create an inheritance in javascript using functions and classes如何使用函数和类在 javascript 中创建继承
【发布时间】:2020-11-06 23:44:42
【问题描述】:

我想在我定义了类的地方创建一个继承并使用函数创建继承

class ClassA{
    constructor(){
    this.name = "Kanike"
    }
}
function ClassB(jkk){
     new ClassA()
    this.last = jkk
    
}
ClassB.prototype = ClassA.prototype
var myClassB = new ClassB("kel");
alert(myClassB.name)//cant be accessed here

【问题讨论】:

  • 你的意思是你想让function定义的构造函数继承class定义的构造函数吗?为什么? (你应该有充分的理由,因为它过于复杂并且没有提供可移植性的好处。)
  • 你已经在使用class,为什么不正确地使用class ClassB extends ClassA呢?文档:developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/…
  • 你不能真正从类中“继承”普通的构造函数,因为要正确地做到这一点,你必须使用特定的this 值调用类构造函数,但类构造函数只能是用new 调用(不能设置this)。 ClassB.prototype = ClassA.prototype 也是错误的。有关如何使用构造函数设置继承的更多信息,请参阅stackoverflow.com/q/17392857/218196。但正如大家所说,只需使用class
  • @Ry- 实际上,我们有一个 JS 包,其中所有内容都在 Class 中,并且我们有自己的 Product,我们使用基于函数的类。如果有任何解决方案,它对我们很有帮助
  • @prawin: 解决方法是你切换到classfunction 构造函数除了 ES5 兼容性之外没有任何优势,而且你不能以任何方式仅使用 ES5 特性来扩展 ES6 类。

标签: javascript oop inheritance


【解决方案1】:

这就是extends 关键字的用途。扩展类,您可以访问namelast 字段:

class ClassA {
  constructor() {
    this.name = "Kanike";
  }
}

class ClassB extends ClassA {
  constructor(last) {
    super();
    this.last = last;
  }
}

let classB = new ClassB("Kel");
console.log(classB.name, classB.last);

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多