1.ES5构造函数
问题:继承中父类与子类的书写是否有先后顺序的要求:没有
function Son(name){
this.name=name?name:"tony";
}
function Father(tag){
this.tag=tag?tag:"no useful data";
this.skill=function(){console.log("try everything you wantt");}
}
Father.prototype.do=function(){
console.log(this.tag+"等级");
}
Son.prototype=new Father("鼻祖");
var s=new Son("易洋千玺");
s.do();//鼻祖等级
2.ES6中的class
问题:继承中父类与子类的书写是否有先后顺序的要求:有
问题:子类继承父类,那父类中所需的参数如何传递:
问题:能否以正常的ES5函数的调用方式使用:否
//demo1:
class Son extends Father{
constructor(tag,name){
super(tag);
this.name=name;
}
}
class Father{
constructor(tag){
this.tag=tag?tag:"no useful data";
this.skill=function(){console.log("try everything you wantt");}
}
do(){
console.log(this.tag+"等级");
}
}
var s=new Son("鼻祖","易洋千玺");
s.skill();// Uncaught ReferenceError: Father is not defined
//demo2: --------------------------------------
class Father{
constructor(tag){
this.tag=tag?tag:"no useful data";
this.skill=function(){console.log("try everything you wantt");}
}
do(){
console.log(this.tag+"等级");
}
}
class Son extends Father{
constructor(tag,name){
super(tag);
this.name=name;
}
}
var s=new Son("鼻祖","易洋千玺");
s.skill();//try everything you wantt
//demo3:-------------------------------------------
class Son{
constructor(name){
this.name=name;
}
}
Son("易洋千玺");//Class constructor Son cannot be invoked without 'new'
结论:
第一点:首先子类继承父类时,必须先存在父类,
第二点:子类继承父类时,父类的参数通过super来传递
第三点:class形式构造的函数,只能通过new 来调用。