当前位置: 代码迷 >> 综合 >> es6 Class通俗理解方式
  详细解决方案

es6 Class通俗理解方式

热度:57   发布时间:2024-02-10 04:26:23.0
// 注意类没有函数声明提升,所以在实例化的时候,必须写在实例化之前,class Person{constructor(name,age){//这个函数,在该类实例化的时候,就会立即执行,那么这里一般放各种属性,或者实例化立即需要执行的方法this.name=name this.age=agethis.show() //如果是事件,需要实例化一遍}setShow(){console.log(this.name)}show(){console.log(this.name)//注意这里面再用函数,需要注意调用的this.尾部可以用bind(this)去更改this的指向this.func=function huidiao(){如果不更改,则this会指向func}.bind(this)//改变当前函数内的this指向 //当然或者使用es6的箭头函数,}del(){console.log(123)}//下面的set和get 一般用于框架封装,不会用到set aaa(val){////set是设置属性的 存值函数console.log('设置aaa的属性的,设置的属性值为val')}get bbb(){//这个括号里面是不带参数//get 获取数据return '123'+this.name}static state(){//这是静态方法,不需要去实例化 new Personconsole.log('静态方法')}}Person.state() //静态方法,直接用类名调用里面的静态方法// let aa=new Person(123)// aa.setShow()//第一个子类 第二个父类 继承父类class Student extends Person{//super就是可以看做已经实例化的父类 直接拿参数,或者点方法.不覆盖父类的方法//如果写了构造器,会覆盖隐式的构造器,并且需要super()constructor(name,newstate){super(name) //该段继承父类name 把父类的代码直接拉过来了//子类需要继承父类的属性,那么必须super()  相当于把父类的constructor()拉过来了,//constructor(name)  super(name)  则可以拿到父类的属性,如果还需要其他的属性,继续添加this.newstate=newstate //这个是子类的自己的添加的属性this.show()}    show(){// 如果子类和父类的函数名称一样,会冲掉父类的相同名的方法,super.show() //super就是父类,父类调用一个父类内的方法,所以还是会执行show内的方法,不会覆盖之前的....//子类的方法}}let stu=new Student('新的学生')console.log(stu.name)

 第一  有基于父类扩展方法,在初始化函数constructor内,需要super并传入父类实例必须的参数

第二 调用任意父类方法,super.父类方法名

 

  相关解决方案