ES6的class语法

ES6的class语法
普通面对对象
function  Person( name,age){
   this.name=name;
   this.age=age;   
}
Person.prototype..sayhello=function( ){
      console.log(this.name)
}
//实例
const p=new Person('kaivon' , 18);
p . showName( );

//ES6面向对象
class  whitePerson(name,age){
    constructor:{
       this.name=name;
       this.age=age;
    } //注意这不能写逗号
    showName( ){
        console.log(this.name)
    }
}
const p1=new whitePerson('kaivon' , 18);
p1 . showName( );

class是一个声明,与var,let一样。它的作用是声明一个类
语法  
    class name[extends]{
       //class body
    }
    extends为继承,是个可选参数
注意:
声明的类还是构造函数
不能重复声明,会报错(相当于声明一个变量,与let,const一样)
与ES5写的构造函数行为一致,除了原型里方法的可枚举性以外
共享方法(实例方法)直接写,它会自动放在prototype上
共享属性(实例属性)需要写在constructor里

共享属性和方法
1,类里的this指向实例,所以属性都放在this上,一般会在constructor里去定义
2,共享方法放在大括号内,因为大括号内容的方法会最终放到prototype里

私有属性与方法
1,ES6规定大括号里面只能放方法,不能放属性,
2,或者在类的外面添加属性,
3,私有方法可以被其他子类继承
 
new . target属性 返回构造函数(类)
1,一般用在构造函数之中,在class内部指向构造函数
2,如果构造函数不是通过new命令调用的,将返回undefined
3,当有继承的时候,它放回子类

class的方法也有私有的:加个static
//get和post
class Pop{
   get  att( ){
       return  '你获取了'
    }
   set att( ){
     console.log(`你设置了个${value}`);
   }
}
const  p1=new Pop( );
console.log( p1.att ); //你获取了
p1.att='名字' ; // 你设置了个名字

猜你喜欢

转载自blog.csdn.net/L_AMiao/article/details/80835035