【发布时间】: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: 解决方法是你切换到
class。function构造函数除了 ES5 兼容性之外没有任何优势,而且你不能以任何方式仅使用 ES5 特性来扩展 ES6 类。
标签: javascript oop inheritance