ES6 Proxy裡面為什麼要用Reflect?

時間 2021-12-29 06:53:30

1樓:navegador

我想抖一下:

這是因為這個環境對於這不停需要追尋什麼和實現什麼的【意志】沒有給予任何物件,無論是好的還是不好的物件,因此就只剩下【單純觀賞】的情況了。誰如果不能進行這種觀賞,就會因為羞慚的自備而進入意志渾渾噩噩的空虛.

---- 作為意志和表象的世界叔本華

Reflect 就是顯式強調進入 【單純觀賞】的境界。從而擺脫 【渾渾噩噩的空虛】

2樓:前端鋼琴師

我也曾思考過這個問題,起初覺得這種 API 寫起來感覺又臭又長,後來比較之後,一定程度明白了大丈夫能屈能伸才是王道,需求決定最佳 API,男人嘛,有時候需要長一點(比如時間) ,有時候需要短一點(比如距離)。我想嘗試從知己表面的直接使用來講一下。

Reflect.get(v, k) 函式呼叫時,會自動檢測 v 的型別,若是 v 非物件資料型別,會丟擲異常,其他 API 大致也有此特性,也可能有對部分場景有用的返回值方便你進行邏輯判斷等操作,具體可以參考阮一峰老師的書或 MDN 文件,有更加的詳細介紹各個 API 的使用和特點。

順便舉個粒子:

/* 判斷是否為函式物件 */

const

isCallable=x

=>typeof

x===

'function'

/* 判斷是否為可迭代物件 */

const

isIterable=x

=>catch

}/* 判斷是否為 thenable 物件 */const

isThenable=x

=>catch}

3樓:Arthas

因為要方便操作原來的物件。

比如之前Object.defineProperty(obj,"key",Set.....),你必須要新建乙個內部變數 _key set對其賦值,然後get中return _key才能讀取obj.

key。

4樓:Gaubee

簡單說:不是很嚴格的模式下,用target[key]效能一般會更好,因為沒有call的開銷。

展開說:

Reflect相關的介面是和Proxy一起配套出來的。它們都是target只能是object,也就是說Reflect.get(1,'toString')是會報錯的。

你有沒有注意到Proxy裡頭的get等還有乙個「多餘的傳入引數」:receiver,它和Reflect.get的第三個引數是配套的,如果那個你的Proxy裡頭的target還是乙個proxy,並且對receiver有自己的用途,那麼只能用Reflect.

get(target,prop,receiver),將receiver正確地傳遞進去了。

還是關於receiver,一般來說receiver是表示式proxy[key]中的這個proxy,而如果你直接使用target[key],那麼等於把this給篡改了。而正確使用Reflect.get(target,prop,receiver),還能確保this仍然是proxy.

5樓:和聲伴奏

很多規範內部的演算法,都不適合讓使用者自己來做邊界處理,Reflect 統一來做就行,未來規範的變化或者有什麼新增的,也不需要使用者額外的做相容。

6樓:吃冬瓜群眾代表

拋開函式式什麼什麼的思想一類的東西,你對他們的了解也僅僅是API 的一部分,一部分,一部分

varo=,

};Reflect

.get(o

,"p",);

為什麼我試駕了蔚來es6覺得非常難開,網上好評一片

知乎真的有趣。上個月蔚來車庫撞牆我說低附標定不合格 主要問題是滑動時轉向輸入直接失效 一大堆 工程師 求知乎恰飯的別再侮辱工程師了。反對,懟我。過了2周特斯拉model3低附剎不住,一大堆人又說 低附標定有問題了 其實人家model3 低附制動真沒問題,95 的油車都可以復現,我保證和特斯拉一樣樣....

React 預設 props 為什麼不能用 es6 預設值?

朱仕傑 可以去看看左耳朵浩子講的引用語言方法呼叫彙編的實際原理,函式來說每個引數都被賦值了乙個臨時變數,可能作者想保持純函式的風格就沒有進行最後complier的支援。 Memoirs 不建議使用defaultProps,因為React可能會使用jsx runtime來替代React.createE...

文明6裡面為什麼澳大利亞和加拿大還能有文明?

flashrouster 以前我也考慮過這個問題,但是新季票的出現讓我似乎明白了。文明6有真實地理位置開局的有地球,歐洲,東亞,歐洲尤其是西歐,已經滿的不能再滿了 東亞也有一堆國家 盲猜或許將來還會有暹羅 地球的話,真實地理位置就更不平衡了,英國日本得苟到造船業研究出來才能讓開拓者下海,然而估計那時...