當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript代理模式
生活随笔
收集整理的這篇文章主要介紹了
JavaScript代理模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代理模式舉例
首先可以看一下代理模式局的一個例子:
class RealImg {constructor(fileName) {this.fileName = fileName// 模擬從硬盤初始化加載this.loadFromDisk() }display() {console.log('display...' + this.fileName)}loadFromDisk() {console.log('loading...' + this.fileName)} }class ProxyImg {constructor(fileName) {this.realImg = new RealImg(fileName)}display() {this.realImg.display()} }// test let proxyImg = new ProxyImg('1.png') proxyImg.display()這其實也有點類似于一個包裝器。在ES6中有一個關鍵字Proxy,可以天然的讓我們去實現代理。
Proxy
我們來舉一個明星和經紀人的例子。你不能直接和明星聯系,只能和經紀人打交道,以此來獲得明星的信息。
let star = {name: '張xx',age: 25,phone: '12345678910' }let agent = new Proxy(star, {// target是要代理的對象,key是屬性的值get: function (target, key) {if (key === 'phone') {// 返回經紀人自己的電話return '66666666'}if (key === 'price') {// 明星不報價,經紀人報價return 120000}// 其他情況// 可以獲取name和age,這兩個不保密,只有phone是保密的return target[key]},set: function (target, key, val) {if (key === 'customPrice') {if (val < 100000) {// 最低10wthrow new Error('價格太低')} else {target[key] = val return true}}} })// test console.log(agent.name) console.log(agent.age)agent.customPrice = 150000總結
以上是生活随笔為你收集整理的JavaScript代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适配器模式、代理模式、装饰器模式使用场景
- 下一篇: JavaScript观察者模式