最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6 proxy和reflect的使用方法與應(yīng)用實(shí)例分析

 更新時(shí)間:2020年02月15日 12:09:45   作者:qdmoment  
這篇文章主要介紹了ES6 proxy和reflect的使用方法,結(jié)合具體實(shí)例形式分析了ES6 proxy和reflect基本功能、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了ES6 proxy和reflect的使用方法。分享給大家供大家參考,具體如下:

proxy和reflect都是es6為了更好的操作對(duì)象而提供的新的API,接下來探討一下二者的作用,聯(lián)系。

設(shè)計(jì)proxy,reflect的作用:

proxy的作用:

Proxy的設(shè)計(jì)目的在于(修改編程語言),修改某些操作方法的默認(rèn)行為,

等同于在語言層面作出修改,是元編程(meta programming)  例如修改set,get方法

reflect的作用:

1,映射一些明顯屬于對(duì)象語言內(nèi)部的方法,目前是共存于Object和Reflect上,未來只在Reflect上

2,修改一些Object上的方法返回的結(jié)果,減少異常拋出,使其變得更加合理

3,讓Object操作都變成函數(shù)行為(主要的作用)

4,Reflect對(duì)象的方法與Proxy對(duì)象的方法一一對(duì)應(yīng)(主要的作用)

proxy和reflect的方法:

proxy的實(shí)例方法:

get() set() apply() has() cunstruct() deleteProperty() defineProperty()
getOwnPropertyDescriptor() getPrototypeOf() isExtensible() ownKeys(), preventExtensions() setPrototypeOf()  
var person = {
 name: "張三"
};
 
var proxy = new Proxy(person, {
 get: function(target, property) {
  if (property in target) {
   return target[property];
  } else {
   throw new ReferenceError("Property \"" + property + "\" does not exist.");
  }
 }
});

注:目標(biāo)對(duì)象內(nèi)部的this關(guān)鍵字會(huì)指向 Proxy 代理

自身方法:Proxy.revocable方法返回一個(gè)可取消的 Proxy 實(shí)例

reflect的靜態(tài)方法:

和proxy相對(duì)應(yīng),reflect有13個(gè)靜態(tài)方法,分別一一對(duì)應(yīng)于proxy的實(shí)例方法

Reflect.apply(target, thisArg, args) Reflect.construct(target, args)
Reflect.get(target, name, receiver) Reflect.set(target, name, value, receiver)
Reflect.defineProperty(target, name, desc) Reflect.deleteProperty(target, name)
Reflect.has(target, name) Reflect.ownKeys(target)
Reflect.isExtensible(target) Reflect.preventExtensions(target)
Reflect.getOwnPropertyDescriptor(target, name) Reflect.getPrototypeOf(target)
Reflect.setPrototypeOf(target, prototype)  

proxy和reflect聯(lián)系:proxy的實(shí)例方法和reflect的靜態(tài)方法一一對(duì)應(yīng)

實(shí)例:觀察者模式的實(shí)現(xiàn)

const queuedObservers = new Set();
 
const observe = fn => queuedObservers.add(fn);//接收一個(gè)函數(shù)fn
const observable = obj => new Proxy(obj, {set});//接收一個(gè)對(duì)象obj,采用set函數(shù)攔截設(shè)置obj
 
function set(target, key, value, receiver) {
 const result = Reflect.set(target, key, value, receiver);
 queuedObservers.forEach(observer => observer());
 return result;
}

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 利用JS十分鐘判斷數(shù)組中存在元素的多種方式

    利用JS十分鐘判斷數(shù)組中存在元素的多種方式

    這篇文章主要給大家介紹了關(guān)于利用JS十分鐘判斷數(shù)組中存在元素的多種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于JavaScript編寫一個(gè)圖片轉(zhuǎn)PDF轉(zhuǎn)換器

    基于JavaScript編寫一個(gè)圖片轉(zhuǎn)PDF轉(zhuǎn)換器

    本文為大家介紹了一個(gè)簡(jiǎn)單的 JavaScript 項(xiàng)目,可以將圖片轉(zhuǎn)換為 PDF 文件。你可以從本地選擇任何一張圖片,只需點(diǎn)擊一下即可將其轉(zhuǎn)換為 PDF 文件,感興趣的可以動(dòng)手嘗試一下
    2022-07-07
  • 淺談下拉菜單中的Option對(duì)象

    淺談下拉菜單中的Option對(duì)象

    Option 對(duì)象代表 HTML 表單中下拉列表中的一個(gè)選項(xiàng)。在 HTML 表單中 <option> 標(biāo)簽每出現(xiàn)一次,一個(gè) Option 對(duì)象就會(huì)被創(chuàng)建。您可通過表單的 elements[] 數(shù)組訪問一個(gè) Option 對(duì)象,或者通過使用 document.getElementById()。
    2015-05-05
  • 微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面

    微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 從數(shù)據(jù)庫讀取數(shù)據(jù)后將其輸出成html標(biāo)簽的三種方法

    從數(shù)據(jù)庫讀取數(shù)據(jù)后將其輸出成html標(biāo)簽的三種方法

    需要輸出成html標(biāo)簽時(shí)編譯器卻自動(dòng)幫我們輸出成字符串,這該怎么辦?下面有個(gè)三個(gè)解決方法,一一測(cè)試便知其效果是如何
    2014-10-10
  • Object的相關(guān)方法 和 js遍歷對(duì)象的常用方法總結(jié)

    Object的相關(guān)方法 和 js遍歷對(duì)象的常用方法總結(jié)

    這篇文章主要介紹了Object的相關(guān)方法 和 js遍歷對(duì)象的常用方法,結(jié)合實(shí)例形式總結(jié)分析了Object對(duì)象操作的操作方法與js遍歷的三種常用方法,需要的朋友可以參考下
    2023-05-05
  • uniapp項(xiàng)目實(shí)踐自定義加載組件示例詳解

    uniapp項(xiàng)目實(shí)踐自定義加載組件示例詳解

    這篇文章主要為大家介紹了uniapp項(xiàng)目實(shí)踐自定義加載組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • javascript offsetX與layerX區(qū)別

    javascript offsetX與layerX區(qū)別

    FF沒有offsetX屬性,有個(gè)layerX屬性,只要將事件源的位置設(shè)置成相對(duì)定位(position:relative)或絕對(duì)定位(position:absolute),兩者結(jié)果就相等,表示事件源相對(duì)于父元素的X坐標(biāo)。
    2010-03-03
  • JavaScript多種頁面刷新方法小結(jié)

    JavaScript多種頁面刷新方法小結(jié)

    這篇文章主要介紹了JavaScript多種頁面刷新方法小結(jié),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 深入理解ES6的迭代器與生成器

    深入理解ES6的迭代器與生成器

    本篇文章主要介紹了深入理解ES6的迭代器與生成器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評(píng)論

雅江县| 灵石县| 杭锦旗| 静宁县| 柘城县| 河曲县| 格尔木市| 望奎县| 孝义市| 扬州市| 宁德市| 昆山市| 常熟市| 永泰县| 大城县| 大厂| 互助| 无棣县| 河源市| 丹江口市| 霍林郭勒市| 炉霍县| 太仆寺旗| 皋兰县| 农安县| 日土县| 尤溪县| 青海省| 沙坪坝区| 同心县| 辽宁省| 汉阴县| 乌拉特后旗| 安远县| 平乐县| 嘉定区| 海阳市| 德庆县| 金平| 建昌县| 濮阳县|