class类(Es6)

174 阅读1分钟

在面向对象中类有:属性,方法

1.ES5创建类

1.创建类:

  function Person(name,age){
   this.name=name;
 this.age=age;
  }
  

2.为类添加方法:

 Person.Prototype.showName=function(){
 return `名字为${this.name}` 
}

3.创建一个实例,使用类

  let p1 =new Person('son',18)

2.Es6中class创建类

   class Person{ //1.创建类
   constructor(name,age){     //2.添加属性
     this.name=name;
     this.age=age;
    }
   showAge(){ //3.添加方法
   return '名字为${this.name}
   }
  }

 let p1=Person('son’,13);

2.class里取值函数getter,存值setter 没有get就取不出来

  class Person{
 constructot(){
 }
 get add(name){return name;}
 set add(name){};
 }

 let p1=new Person();
 pl.aa`='123';//// setter: 123
 p1.aa;//getter123
 console.lof(p1.aa);  如果没有get就取不出来值,取出的为undifine;

3.静态方法 (类身上的方法)

与普通方式的区别就是

静态方法直接调用,不用实例化对象再调用

 class Person{
 static add(){
  return 'sss';
   }
 Person.add();

4.Es6里面this矫正3中方法

fn.call(this指向,arg1,arg2)

fn.apply(this指向,[arg1,arg])

fn.bind(this)

5.继承

1.Es5中的继承

父类:

       function Person(name){
         this.name=name;
       }
      Person.prototype.showNam=function(){
       return this.name;
      }
      

子类:

     function son(name.age){
       Person.call(this.name);//继承属性,并且用call来矫正方法
       this.age=age;
       }
      student.prototype=new Person();//继承方法

2.Es6中的继承 父类:

    class Person{
       constructor(name){
         this.name=name;
       }
       showAge(){return aaa;}
       

子类:

     class Student extends  Person{//继承父类

        constructor(name,age){
         super(name);// // 调用父类的constructor(),把父类属性初始化到子类实例中
         this.age=age;
       }
       showAge(){
        supe.showAge();//父级方法调用(当名字重用了时)
       }