Proxy(代理,攔截器),Reflect(反射)
Proxy:
代理:
var duixaing = { "name":"小胖", "age":25, "sex":"男" } duixaing.name="老胖"; console.log(duixaing.name);//打印:老胖。 console.log(duixaing);//打印:Object {name: "老胖", age: 25, sex: "男"}。 var obj = { "name":"小胖", "age":25, "sex":"男" }
攔截:
var porxObj = new Proxy(obj,{ set:function(traget,key,value){ if(value == "老胖"){ traget[key]=value; } }, get:function(traget,key){ if(traget[key]==undefined){ return "我沒有該屬性"; }else{ return traget[key]; } } }); porxObj.name="老胖"; console.log(obj);//打印:Object {name: "老胖", age: 25, sex: "男"}。 console.log(porxObj.xh);//打印:我沒有該屬性。 console.log(porxObj.name);//打印:老胖。 //set:設置屬性; //get:獲取屬性; 注釋:Proxy要傳兩個值,第一個值是要代理的對象,第二個值是要做哪些操作;
Reflect:
var obj = { name:"老胖", age:21, sex:"男" } //Object.defineProperty(obj,"school",{value:"師徒教育"});
定義屬性:
Reflect.defineProperty(obj,"school",{value:"師徒教育"}); console.log(obj); //讓Object操作變為函數行為: //delete obj.name; Reflect.deleteProperty(obj,"name"); console.log(obj); console.log(Reflect.has(obj,"age")); //是否有沒有這個屬性,如果返回true,沒有返回false;
Reflect對象的方法與Proxy對象的方法一一對應:
var porxObj = new Proxy(obj,{ set:function(traget,key,value){ if(value == "老胖"){ Reflect.set(traget,key,value); } }, get:function(traget,key){ if(traget[key]==undefined){ return "我沒有該屬性"; }else{ return Reflect.get(traget,key); } } }); 注釋:Reflect一樣都是es6提供的用來操作對象API(接口,文檔);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84128.html
摘要:方法與代理處理程序的方法相同。使用給目標函數傳入指定的參數。當然,不用反射也可以讀取的值。的例子我們可以理解成是攔截了方法,然后傳入參數,將返回值賦值給,這樣我們就能在需要讀取這個返回值的時候調用。這種代理模式和的代理有異曲同工之妙。 反射 Reflect 當你見到一個新的API,不明白的時候,就在瀏覽器打印出來看看它的樣子。 showImg(https://segmentfault....
摘要:方法與代理處理程序的方法相同。使用給目標函數傳入指定的參數。當然,不用反射也可以讀取的值。的例子我們可以理解成是攔截了方法,然后傳入參數,將返回值賦值給,這樣我們就能在需要讀取這個返回值的時候調用。這種代理模式和的代理有異曲同工之妙。 反射 Reflect 當你見到一個新的API,不明白的時候,就在瀏覽器打印出來看看它的樣子。 showImg(https://segmentfault....
摘要:代理器攔截器反射和一樣都是用來操作對象的代理操作代理器同樣具有方法小花男小花沒有該屬性李小花反射和一樣都是用來操作對象的小花女師徒教育小花沒有該屬性李小花主要就是在執行函數之前代理一下完事在執行 Proxy(代理器/攔截器)Reflect反射 Reflect和Proxy一樣 都是es6用來操作對象的 API Proxy 代理操作 Proxy代理器 var proxy =...
摘要:通過對這些底層內置對象的代理陷阱和反射函數,讓開發者能進一步接近引擎的能力。顯然,與要求代理目標對象必須是一個函數,這兩個代理陷阱在函數的執行方式上開啟了很多的可能性,結合使用就可以完全控制任意的代理目標函數的行為。 代理(Proxy)可以攔截并改變 JS 引擎的底層操作,如數據讀取、屬性定義、函數構造等一系列操作。ES6 通過對這些底層內置對象的代理陷阱和反射函數,讓開發者能進一步接...
閱讀 2897·2021-11-17 09:33
閱讀 3678·2021-11-16 11:42
閱讀 3498·2021-10-26 09:50
閱讀 1353·2021-09-22 15:49
閱讀 3051·2021-08-10 09:44
閱讀 3684·2019-08-29 18:36
閱讀 3941·2019-08-29 16:43
閱讀 2231·2019-08-29 14:10