87,997
社区成员




function B() {
A.call(this);
}
class Test{
constructor(SubClass){
this.a=1;
if(new.target==SubClass){
return Object.assign({},this);
}
}
show(){
alert(this.a);
}
}
class M extends Test{
}
let t=new M(M);
alert(t.a);
t.show();
改成这样试试
class A{
constructor(){
this.a=1;
this.b=2;
}
show(){
alert(this.a);
}
}
class C{
constructor(obj){
Object.assign(this,obj);
}
}
class B extends C{
constructor(){
super(new A());
}
}
let b=new B();
console.log(b.a);
console.log(b.b);
b.show();
或者包一层试试
class A{
constructor(){
this.a=1;
}
show(){
if(new.target!=A){
throw new Error('can not extends');
}
alert(this.a);
}
}
class B extends A{
constructor(){
super();
}
}
let b=new B();
console.log(b.a);
b.show();
es6的继承是现有父类的this 之后在父类的this上添加子类的东西 所以继承的时候就有了父类的所有东西了 而es5正好相反 做检测试试