在ES6最具特色的特徵其中之一便是「Arrow functions」,其幫助開法者「節省時間,簡化函式的作用域」。

節省時間及行數

一樣的結果,傳統函式需要兩行的空間;ES6的箭頭函式只要一行就可以實現,當我們撰寫程式時,這會讓我們省下時間。

Arrow functions沒有自己的 This

<ES5函式宣告>

JS的「作用域」能將變數限制在函示、區塊中,當然還有自由調用的全域變數。

var的作用域屬於「函式作用域」,也就是當我在函式中藉由var宣告一變數,是無法在外部呼叫它的。

let、const屬「區塊作用域」,也就是當我在含有{}這個block裏頭,透過let,const宣告個變數,是無法在{}block以外調用它的。

根據MDN Getter 和Setter的定義:Setter會幫你定義特定物件的屬性,Getter會幫你取得特定物件屬性的值。你可以在所有預先定義的使用者物件中定義set以及get。

我直接在wallet這個物件的定義裏頭,定義了set,get(橘匡),根據JS的語法作用域,想要取得外層的total這個屬性,可以藉由this來取得之。

<注意>setter 和 getter可以有同樣的名字,在使用setter — save時,方法很特別,不是透過括號的方式將argument傳入,而是透過assignment(等號)將引述傳入噢!!!

自定義的屬性,與原生的屬性,其差別在「可否被列舉」

enumerable : true vs. false

defineProperty() — 用來定義物件屬性的特徵。

hasOwnProperty()是針對呼叫hasOwnProperty()這個函式的物件進行查看,並不會向上查找屬性。

getOwnProperty()查看屬性的特徵。