1. 程式人生 > >ES6的class語法

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='名字' ; // 你設定了個名字