js ES6學習筆記 Proxy

2021-09-08 19:50:23 字數 1348 閱讀 6577

1、proxy 用於修改某些操作的預設行為,等同於在語言層面做出修改,所以屬於一種「元程式設計」(meta programming),即對程式語言進行程式設計。

2、proxy 可以理解成,在目標物件之前架設一層「攔截」,外界對該物件的訪問,都必須先通過這層攔截,因此提供了一種機制,可以對外界的訪問進行過濾和改寫。proxy 這個詞的原意是**,用在這裡表示由它來「**」某些操作,可以譯為「**器」。

3、es6 原生提供 proxy 建構函式,用來生成 proxy 例項。

var proxy = new proxy(target, handler);

proxy 物件的所有用法,都是上面這種形式,不同的只是handler引數的寫法。其中,new proxy()表示生成乙個proxy例項,target引數表示所要攔截的目標物件,handler引數也是乙個物件,用來定製攔截行為。

4、乙個技巧是將 proxy 物件,設定到object.proxy屬性,從而可以在object物件上呼叫。

var object = ;

5、get方法用於攔截某個屬性的讀取操作。下面是乙個攔截讀取操作的例子。

var person =;

var proxy = new

proxy(person,

else

}});

proxy.name

//"張三"

proxy.age //

丟擲乙個錯誤

6、set方法用來攔截某個屬性的賦值操作。

let validator =

if (value > 200)

}//對於age以外的屬性,直接儲存

obj[prop] =value;

}};let person = new

proxy({}, validator);

person.age = 100;

person.age

//100

person.age = 'young' //

報錯person.age = 300 //

報錯

var twice =

};function

sum (left, right) ;

var proxy = new

proxy(sum, twice);

proxy(1, 2) //

6proxy.call(null, 5, 6) //

2230

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命令宣告的常量也是不提公升,同樣存在暫時性死...

js ES6學習筆記 修飾器

1 修飾器對類的行為的改變,是 編譯時發生的,而不是在執行時。這意味著,修飾器能在編譯階段執行 2 function testable target testable class mytestableclass console.log mytestableclass.istestable true ...