proxy的理解及proxy為什麼可以監聽陣列?

2021-10-09 06:00:55 字數 2190 閱讀 9146

1,proxy的基本理解

proxy是es6中的語法,最為**的功能,當外接要訪問物件的時候,proxy可以做一層攔截,並且可以對這個proxy**進行操作,進而實現對物件的操作。如:

var proxy =

newproxy

(obj, handler)

這裡定義的proxy作為obj的**,handler也是個物件,在這裡進行操作,proxy和obj始終保持狀態一直,proxy進行了什麼操作之後,obj同樣做出改變,是乙個對obj全物件的監聽。目前有14攔截操作,具體可看es6文件。

2,proxy和reflect關係

reflect也是es6的語法,再proxy使用中常用到reflect,reflect有14中方法,對應proxy是一樣的,但是這倆其實沒關係,只是搭配著使用,proxy用來攔截,reflect用來操作。

var obj =

;var proxy =

newproxy

(obj,

,set

:function

(target, key, value, receiver)})

;proxy.b //get的key為 ===>b

proxy.a =

5//set的key和value為 ===>a 5

proxy.b =

2//set的key和value為 ===>b 2

第乙個proxy.b,沒有賦值操作直接點乙個屬性,這時候走的就是get方法,reflect返回的就是key,也就是b。

第二個給**物件proxy的a複製5,走的就是set方法,裡面的reflect.set是把value值賦給當前物件的key,就是把5賦給a。

3,為什麼可以監聽陣列

執行下面**:

let arr =[1

,2,3

]let proxy =

newproxy

(arr,

,set

(target, key, value, receiver)})

proxy[0]

// set的key為 ===>0

proxy[3]

=12// set的key為 ===>3 12

可以看到,和上面obj的時候結果一樣,key值是索引,如果使用陣列的方法呢?

proxy.

push

('2'

)// get的key為 ===>push

// get的key為 ===>length

// set的key為 ===>3 2

// set的key為 ===>length 4

console.

log(proxy,

'proxy的length='

+ proxy.length)

console.

log(arr,

'arr的length='

+ arr.length)

// get的key為 ===>length

// proxy "proxy的length=3"

// [1, 2, 3] "arr的length=3"

可以看到,get方法走了兩邊,set方法走了兩邊。因為push方法其實做了兩步,第一是再length出加上push的值,第二是把length加一,所以走了兩邊。

原因:

從**執行上看,確實是可以監聽陣列,分析下,首先,陣列其實也是物件,從typeof方法可以看出來,不然,陣列也不能使用.length,[0],.push()等,如果把陣列寫成類陣列物件,就好理解多了。

let objarr =

從console的結果所以可以看出,這裡的proxy就是個類陣列。那麼可以猜想,如果proxy第乙個引數傳的是陣列時,proxy就會轉化成類陣列,也可以呼叫陣列的方法,length、push等,找不到的方法就去原型鏈上找。

所以,如果陣列長度改變,key值就是length,呼叫push等方法,key就是push。這樣一切就理的通了。當然這也是我個人再學習proxy時候的一些理解,也或許是這樣或許不是這樣,但我這樣去理解確實會明白多,如果不對的話希望大家看了之後可以糾正指點。

為kubespray開啟proxy模式

參考文件 修改.inventory your name group vars all all.yml 檔案,去掉loadbalancer apiserver localhost和nginx kube apiserver port的注釋,並把nginx kube apiserver port修改為64...

vue中 關於proxy的理解

我們本地除錯一般都是npm run serve,然後開啟本機ip 8080 localhost 8080 對吧,這時候我們要調介面除錯,後端的介面的位址可能在測試環境,也可能是自己電腦的 ip,總之不是你的lcoalhost 8080,那麼你調介面就會產生跨域,那麼怎麼辦呢?就需要proxy出場了 ...

Proxy的配置公式。

調整備份 的大小 獲得適當的處理能力對於實現業務定義的rto rpo至關重要。在本節中,我們將概述適當調整大小的建議。處理資源 如上所述,您可以在備份 設定中定義最大併發任務值。最佳做法是為每個任務規劃1個物理核心或1個vcpu和2 gb ram。任務一次處理1個vm磁碟,cpu ram資源用於內聯...