1. 程式人生 > >es6-Class 類

es6-Class 類

Class 的基本語法

通過class關鍵字,可以定義類

class寫法讓物件原型的寫法更清晰、更像面向物件程式設計的語法

通過建構函式生成例項物件:

//es5寫法: function Point(x,y){     this.x = x;     this.y = y; } Point.prototype.toString = function(){     return "("+ this.x + ',' + this.y+")"; }

var p = new Point(x,y)

//es6寫法: Class Point{     constructor(x,y){         this.x = x;         this.y = y;         }     toString(){         return '('+ this.x + '```,' + this.y + ')';     } }

es6定義一個類,裡面有constructor方法,就是構造方法,this關鍵字代表例項物件。 就是:es5的建構函式Point ,對應es6的Point類的構造方法。

Point類還定義了toString方法, 在類中定義方法是,不需要加“function” 關鍵字, 方法之間不需要加逗號分隔;

es6中的類,完全可以看作建構函式的另一種寫法。

class Point{
   ...
}

typeof Point // "function"
Point === Point.prototype.constructor // true

這個表明,類的資料型別就是函式,類本身就指向建構函式。

使用時,也是直接使用new命令,跟建構函式的用法一毛一樣。

2.嚴格模式

    類和模組的內部,預設都是嚴格模式

3.constructor方法

    1.類中的constructor方法是其預設方法,通過new例項化時,自動呼叫該方法,若為空,則自動新增空的constructor方法

    2.constructor 預設返回例項物件(this),這裡可以指定返回其它物件

    3.使用new

4.類的例項物件

    1.使用new

    2.例項的屬性,若非直接定義在例項本身,則為全部定義在原型上(es6 中 即為class上)

    3.同es5, 類的例項共享同一個原型物件

5.Class表示式

    1.可使用表示式形式定義類 (const MyClass = class Me{});   此時類名為MyClass,Me則只能在Class內部可用

    2.立即執行:

let person = new Class{

    constructor(name){
        this.name = name;
    }
    sayName (){
        alert(this.name)
    }
}("summer");

person.sayName();//summer

6.不存在變數提升

    不同於es5: 必須要先生命,才能呼叫或繼承

7.私有方法和私有屬性

    1.