1. 程式人生 > >ES6 Class筆記

ES6 Class筆記

父類 efi 通過 顯示 指向 xtend 創建對象 base class

class:定義類的關鍵字

使用class定義類與使用函數定義類其實沒有多大的差別。

只是使用class定義更清晰易懂。

constructor()方法:類的構造方法,通過new創建對象時會調用該方法。

該方法是類的默認方法,同時也是類必須的方法,

如果一個類沒有顯示的定義,一個空的constructor方法會被默認添加

class 定義類實例

class Person{

constructor(name = \‘es6\‘,age = 6,sex = \‘man\‘){

this.name = name;

this.age = age;

this.sex = sex;

}

logname(){

console.log(this.name);

}

logage(){

console.log(this.age);

}

logsex(){

console.log(this.sex);

}

}

let person = new Person();

person.logname();//es6

person.logage();//6

person.logsex();//man

extends:累的繼承

class Man extends Person{

}

let man = new man();//在這裏會報錯

在子類中必須先調用父類的構造方法。

因為子類沒有自己的this指向,必須先獲取父類的this指向。

class Man extends Person{

constructor(){

super();

}

}

let man = new Man();

Extends 的繼承目標

子類繼承Object類。

這個時候子類其實是父類的復制。子類的對象其實就是Object的對象

class Meobject extends Object{

constructor(){

super();

}

}

let meobj = new Meobject();

let obj = new Object();

console.log(meobj instanceof Object);//true

console.log(obj instanceof Meobject);//false

getPrototypeOf()獲取父類

console.log(Object.getPrototypeOf(meobj));//Object{}

super 關鍵字

1、當super當函數使用時,表示父類的構造方法

2、當super當對象調用方法時,表示父類的對象。同時會綁定子類的this對象

class Man extends Person{

constructor(){

super();

this.name = \‘php\‘;

super.logname();//php

}

}

let man = new Man();

靜態屬性和靜態方法

靜態屬性:

通過直接定義在類上的屬性是靜態屬性

靜態方法

通過static關鍵字定義

靜態屬性與靜態方法都無法繼承

class Person{

constructor(name = \‘es6\‘,age = 6,sex = \‘man\‘){

this.name = name;

this.age = age;

this.sex = sex;

}

static maek(){

console.log(\‘make\‘);

}

}

Person.base = \‘base\‘;

class Man extends Person{

constructor(){

super();

}

}

let man = new Man();

console.log(man.base);//undefined

man.make();//man.make is not a function

ES6 Class筆記