es6 --- Proxy实例的get方法
生活随笔
收集整理的這篇文章主要介紹了
es6 --- Proxy实例的get方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫一個攔截函數(shù),訪問目標對象不存在屬性時,會拋出不存在該屬性的錯誤
如果存在該屬性時,就返回其值.
效果如下:
使用get攔截實現(xiàn)數(shù)組負數(shù)索引
即:當輸入A[-1]時(假定A.length = 3),返回A[-1 + 3] = A[2]
輸入正常時,返回正常位
使用get操作實現(xiàn)屬性的鏈式操作 (神仙實現(xiàn)…)
var pipe = (function () {return function (value) {var funcStack = [];var oproxy = new Proxy({}, {get: function ({}, fnName) {if (fnName === 'get' ) {return funcStack.reduce(function (val, fn) {console.log("val >>>", val);console.log("fn >>>", fn);return fn(val);}, value);}funcStack.push(window[fnName]);console.log("fnName >>> ",fnName);return oproxy;}});return oproxy;} }()); var double = n => n * 2; var pow = n => n * n; var reverseInt= n => n.toString().split("").reverse().join("") | 0; console.log(pipe(3).double.pow.reverseInt.get); // 注: 首先定義了一個立即執(zhí)行的函數(shù)pipe,pipe函數(shù)內部有一個變量funcStack用于保存鏈式執(zhí)行的方法(.double.pow.reverseInt) // 在Proxy的實例oproxy里面,設置了一個get攔截(可以理解為在執(zhí)行.操作時執(zhí)行函數(shù)),第二個參數(shù)(fnName)用于接收.操作的名稱 // 首先判斷fnName是否為get(此處的get是鏈式操作結束的標志),若不是,就將當前操作入棧funcStack.push // 若fnName 為get,則將保存在funcStack里面的操作取出來,對value值依此執(zhí)行最后返回這個值.
使用get攔截實現(xiàn)一個生成各種DOM節(jié)點的通用函數(shù)dom
具體來說就是,dom.div({},‘Hello World’)就會生成一個<div>Hello World</div>
這個是控制臺打印內容
這個是頁面顯示內容
參考《ES6標準入門》(第3版) P237~P240
總結
以上是生活随笔為你收集整理的es6 --- Proxy实例的get方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: selenium禁止弹窗_python:
- 下一篇: IDEA 设置背景颜色为黑色