使用Proxy和Reflect實現觀察者模式

2021-08-25 17:13:05 字數 966 閱讀 4182

觀察者模式(observer mode)定義:函式自動觀察資料物件的模式,一旦物件有變化,函式就會自動執行

const observeobj = require('./observe.js')

const observe = observeobj.observe

const observable = observe.observable

const person = observable()

function print () $`)

}observe(print)

person.name = '丁丁'

使用要求:

構建observeobj ,具備observe和observable兩個方法

observable構建乙個被觀察的物件

observe為物件增加觀察函式

封裝的觀察者物件**如下:

const queuedobservers = new set()

const observe = fn => queuedobservers.add(fn);

const observable = obj => new proxy(obj, )

function set(target, key, value, receiver)

exports = module.exports =

再深入一些,探索可以觀察到深層改變的觀察者模式,這裡貼上**

module.exports = (object, onchange) =>  catch (err) 

},set(target, property, descriptor) ,

deleteproperty(target, property)

};return new proxy(object, handler);

};

ES6 中的Reflect和Proxy簡單介紹

proxy 與 reflect 是 es6 為了操作物件引入的 api reflect 可以用於獲取目標物件的行為,它與 object 類似,但是更易讀,為操作物件提供了一種更優雅的方式,函式式程式設計。它的方法與 proxy 是對應的。const obj reflect api方法1.refect...

反射 Reflect 和折射 Refract

brdf 雙向反射分布函式 反射 r 2 n l n l 已知量 n 頂點的法向量 l 入射光向量,如果是平行光就直接用光的方向向量,如果是點光源,就通過光源位置和頂點在世界空間的座標進行計算。未知量 r 反射方向向量 總所周知,我們之所以能看見東西,是因為有光的照射,這說明所有我們所能看的到的顏色...

NAT和Proxy的區別

在internet共享上網技術上,一般有兩種方式,一種是proxy 型,一種是nat閘道器型,關於兩者的區別與原理,身邊很多人都不是很明白,下面我來講講我的理解,如有不對的,歡迎指正.1.先說應用例子 伺服器端,用wingate就是proxy,用sygate就是nat 客戶端,需要在ie中設定 伺服...