js ES6學習筆記 修飾器

2021-09-07 10:15:18 字數 893 閱讀 3991

1、修飾器對類的行為的改變,是**編譯時發生的,而不是在執行時。這意味著,修飾器能在編譯階段執行**。

2、

function

testable(target)

@testable

class mytestableclass {}

console.log(mytestableclass.istestable)

//true

上面**中,@testable就是乙個修飾器。它修改了mytestableclass這個類的行為,為它加上了靜態屬性istestable

3、修飾器不僅可以修飾類,還可以修飾類的屬性。

class person  $` }

}

上面**中,修飾器readonly用來修飾「類」的name方法。

此時,修飾器函式一共可以接受三個引數,第乙個引數是所要修飾的目標物件,第二個引數是所要修飾的屬性名,第三個引數是該屬性的描述物件。

function

readonly(target, name, descriptor);

descriptor.writable = false;

return

descriptor;

}readonly(person.prototype, 'name', descriptor);

//類似於

object.defineproperty(person.prototype, 'name', descriptor);

4、修飾器只能用於類和類的方法,不能用於函式,因為存在函式提公升。類是不會提公升的,所以就沒有這方面的問題。

js ES6學習筆記 Proxy

1 proxy 用於修改某些操作的預設行為,等同於在語言層面做出修改,所以屬於一種 元程式設計 meta programming 即對程式語言進行程式設計。2 proxy 可以理解成,在目標物件之前架設一層 攔截 外界對該物件的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進行過濾...

js ES6學習筆記 Reflect

1 reflect物件與proxy物件一樣,也是 es6 為了操作物件而提供的新 api。reflect物件的設計目的有這樣幾個。2 reflect.get方法查詢並返回target物件的name屬性,如果沒有該屬性,則返回undefined。3 reflect.set方法設定target物件的na...

js ES6學習筆記 const命令

1 const宣告乙個唯讀的常量。一旦宣告,常量的值就不能改變。2 const宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須立即初始化,不能留到以後賦值。3 const的作用域與let命令相同 只在宣告所在的塊級作用域內有效。4 const命令宣告的常量也是不提公升,同樣存在暫時性死...