关于class类与ES5中的构造函数的对比

10 篇文章 0 订阅

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 来调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值