Reflect的解釋及用法:
首先上來想多說幾句,就是前幾天看見自己一直訂閱的博客發了一個文章,說如何寫出一篇垃圾的博文,說的我覺得很有道理,就是有些人在發的時候,基本上就是全抄,但是抄也沒事, 至少你要寫清楚,保證你寫的是對的,更不要上面寫了很多但是沒有突出重點,什么東西都沒有介紹。這樣你自己在看的時候什么都沒有看清楚。我覺得這個就是基本的原則問題了吧。然后呢 我就在想自己的寫的什么樣子。我覺得很多我也是參考別人的,會去照着官方解釋文檔 按照自己的理解的去寫出來 記錄下來,照着測試一下看看是什么樣子的情況,最后放上去。其實很多也是在抄,但是話又說回來了只要這個博客有用,介紹了具體的內容,我就覺得就可以吧。畢竟每個人的水平不一樣嗎,寫底層的文章和介紹使用方法的肯定不是一個層面的吧。所以嗎 只要你能寫的正確,條理清晰,就可以。
Reflect的簡介:
首先這個概念是ES6提出來的,為了操作對象而提供的API ,以下的熟知
Reflect對象是一個全局的普通的對象。Reflect的原型就是Object.
1. 將Object對象的一些明顯屬於語言內部的方法(比如Obejcet.defineProperty),放到Reflect對象上。現階段,某些方法同時在Object喝Reflect對象上部署,未來的新方法將只部署在Reflect對象上。也就是說,從reflect對象上可以拿到語言內部的方法。
2. 在使用Object.defineProperty(obj,name,desc)在無法定義屬性時,會拋出一個錯誤,而Reflect.defineProperty(obj,name,desc)則會返回false。
3. 讓Object操作都變成函數行為。某些Object操作是命令式,比如name in obj和delete obj[name],而Reflect.has(obj,name)和Reflect.deleteProperty(obj,name)讓它們變成了函數行為。
4. Reflect對象的方法與Proxy對象的方法一一對應,只要是Proxy對象的方法,就能在Reflect對象上找到對應的方法。這就讓Proxy對象可以方便地調用對應的Reflect方法,完成默認行為,作為修改行為的基礎。也就是說,不管Proxy怎么修改默認行為,你總可以在Reflect上獲取默認行為。
操作的方法: 總共就13個 繼承了Object 來進行相應的操作
1 上面這些方法的作用大部分與Object對象的同名方法都是相同的,與Proxy對象的方法一一對應的。我就稍微寫用法
2 .在攔截處理數據的時候 ,建議就是使用Reflect來進行操作,13個方法在API文檔里面都很清楚,用到去查
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect
舉例子:
獲取對象中是否存在某一個值
var objDemo = {name: 'smallTanks', job: 'web'};
console.log(Reflect.has(objDemo , 'name'));
//輸出--- true
獲取數組中的最大值
var arr = [2, 5, 6, 9, 11];
console.log(Reflect.apply(Math.max, Math, arr));
// 輸出--- 11