es6隨手記 Class的基本語法

2021-09-25 17:17:53 字數 1978 閱讀 1295

//es6中的類    實際上是建構函式的另一種寫法

class aa

}var b = new aa()

b.dostuff() // "aaa"

/實際上類上的所有方法也都定義到了這個類的prototype屬性上

// 上面等同於

aa.prototype =

}

類上定義的方法是不可列舉的,這個和es5中有所區別。

所以可以使用下面方法

object.getownpropertynames(aa.prototype)

// ["dostuff"]

constructor方法是類的預設方法,定義類的時候,會自動為這個類新增乙個空的constructor方法。

constructor方法預設返回當前的例項物件this,可以用它來返回其他的物件。

class aa 

}var b = new aa()

b.dostuff() // "aaa"

//b是aa這個類的例項,b的原型是aa.prototype(也可以說是aa這個類)

類的內部可以使用get和set關鍵字,用來對某個屬性設定訪問函式,攔截該屬性的訪問行為。

class myclass 

get prop()

set prop(value)

}let inst = new myclass();

inst.prop = 123;

// setter: 123

inst.prop

// 'getter'

類可以使用表示式的形式定義。

const myclass = class me 

};let a = new myclass()

//這個類的名字是me,但是只能在class內部使用,代指當前類。在外部,只能用myclass來引用這個類。

const myclass = class {} //如果類的內部沒有用到類的名字,可以寫成這種形式。

//使用class表示式可以寫出立即執行的class。

const myclass = class me

};myclass.getclassname() //"aaa"

類相當於例項的原型,類上的定義的方法,例項都會繼承。如果在乙個方法前,加上static關鍵字,這個方法就不會被例項繼承,而是直接通過類來呼叫,這就叫做『靜態方法』。

class foo 

}foo.classmethod() // 'hello'

var foo = new foo();

foo.classmethod() //這裡會報錯

如果靜態方法中包含this關鍵字,這個this指的是類,而不是例項。同乙個類中,靜態方法可以和非靜態方法重名。父類的靜態方法可以被子類繼承。

例項屬性除了定義在constructor方法中,也可以定義在類的最頂層,此時不需要在例項屬性前加上this。

class foo 

}

class foo 

foo.prop = 1;

foo.prop // 1 //prop就是foo這個類的靜態屬性

只能在類的內部訪問的方法和屬性,外部不能訪問。

new是從建構函式生成例項物件的命令。es6為new加了target屬性,用來返回new命令作用於那個建構函式。

es6隨手記 物件篇

1.屬性的簡潔表示法 const b 1 const a a function f x,y f 1,2 a 等同於 a function 2.屬性名可以的是表示式,但是要用括起來,然後屬性名表示式不能和簡潔表示法一起用 3.物件的擴充套件運算子.解構賦值 將物件中尚未讀取的屬性,分配到制定的物件上,...

es6隨手記 陣列篇

1.rest引數 形式為 變數名 另外rest引數只能作為引數的最後乙個出現,不然報錯。function a a,b a 1,2,3,4,5,6 2.擴充套件運算子.這種情況為rest引數的逆運算,將引數轉成用逗號隔開的引數序列。後面也可以跟表示式 let a 1,2,3,4,5 console.l...

隨手小記(es6)

在學習前輩阮一峰大神寫的 ecmascript入門 一書的過程中,第九章中講到物件擴充套件時,第一條我就有點看不懂 es6允許直接寫入變數和函式,作為物件的屬性和方法。這樣的書寫更加簡潔。var foo bar var baz baz 等同於var baz 當時我就沒想太多,就這樣過去了,結果在學習...