1. 程式人生 > >ES6 -- 最佳代理:Proxy

ES6 -- 最佳代理:Proxy

Proxy可以修改物件的預設行為,例如,如果為某個物件設定了包含有get方法的Proxy物件,那麼當訪問物件的值的時候,要首先經過這個get方法。這樣,開發者獲得了物件代理的許可權和方式;他人對於物件的訪問,將是受到開發者的限制和控制的。

栗子:

var proxyObj = new Proxy({}, {
  get: function (target, key, receiver) {
    console.log(`getting the prop ${key}!`);
    return 18;
  },
  set: function (target, key, value, receiver)
{
console.log(`setting the prop ${key}!`); return Reflect.set(target, key, value, receiver); } });

上面這個程式碼為一個空物件設定了一個代理,重新定義了屬性的get(讀取)和set(設定)行為。

這樣如果我們執行下面這段程式碼,得到的結果就會是:

proxyObj.age
// getting age!
// 18

總結一下上面的栗子,Proxy的基本語法是:

var proxy = new Proxy(target, handler);

其中target表示需要要代理方法的目標物件,handler用來定義需要代理的方法(例如上面栗子中的get和set方法)。

另外一個需要注意的就是,如果需要使用代理方法,必須對new Proxy返回的proxyObj進行操作,而不是對Proxy的引數target進行操作。

Proxy可以代理的方法有很多,如下所示:

1.get
2.set
3.has
4.deleteProperty
5.ownKeys
6.getOwnPropertyDescriptor
7.defineProperty
8.preventExtensions
9.getPrototypeOf
10.isExtensible
11.setPrototypeOf
12.apply
13.construct

關於這些方法的具體使用方法,可參見阮一峰大神部落格。

Proxy代理方法精講

相關推薦

ES6 -- 最佳代理Proxy

Proxy可以修改物件的預設行為,例如,如果為某個物件設定了包含有get方法的Proxy物件,那麼當訪問物件的值的時候,要首先經過這個get方法。這樣,開發者獲得了物件代理的許可權和方式;他人對於物件的訪問,將是受到開發者的限制和控制的。 栗子: var

ES6 -- 最佳代理Proxy例項方法

get方法 該方法用來代理屬性的讀取操作。當用戶希望訪問物件的某個屬性時,會直接觸發這個方法,而不是預設的讀取屬性方法。 栗子: var car = { brank: "Benz" }; var proxy = new Proxy(car, {

Spring中AOPProxy動態代理淺解析(被代理對象必須實現接口)

ima throwable light public RR eth 對象 處理 span 小貼士:以下內容純屬個人觀點,如有不當請指出並諒解 import java.lang.reflect.Proxy; Proxy可以動態代理一個對象 寫一個代理工廠類ProxyFac

ES6代理Proxy和反射Reflect

一、Proxy Proxy(代理)是 ES6 中新增的一個特性。Proxy 讓我們能夠以簡潔易懂的方式控制外部對物件的訪問。其功能非常類似於設計模式中的代理模式。 使用 Proxy 的好處是:物件只需關注於核心邏輯,一些非核心的邏輯(如:讀取或設定物件的某些屬性前記錄日誌;設定物件的

路一步步走>> 設計模式十二Proxy-代理

package com.test.DPs.JieGou.Porxy; /** * 結構型:Porxy-代理 代理:作用面為 物件 */ interface Source{ void method();} class oldClass implements Source{ @Overri

ES6代理Proxy簡介

Proxy概述 Proxy 用於修改某些操作的預設行為,等同於在語言層面做出修改,所以屬於一種“超程式設計”(meta programming),即對程式語言進行程式設計。 Proxy 可以理解成,在目標物件之前架設一層“攔截”,外界對該物件的訪問,都必須先通過這層攔截,

JAVA設計模式之代理模式Proxy

wangking717 寫道 代理模式的作用是:為其他物件提供一種代理以控制對這個物件的訪問。在某些情況下,一個客戶不想或者不能直接引用另一個物件,而代理物件可以在客戶端和目標物件之間起到中介的作用。 或者在一系列功能模組中加入一些擴充套件的功能模組,那個時候就會用到面向切

ES6陣列去重的最佳實踐Set結合Array.from() | 拓展運算子結合 Set

前言 ES5及之前大多都是用遍歷和演算法來實現陣列去重,在ES6有一個更為簡便的方式。ES6之Set,Array.from, ... 實踐 1. Set + Array.from()

es6proxy的簡單使用

proxy,顧名思義是代理的意思;也就是對一個操作的代理,比如當我們對一個物件要進行操作的時候,我們是這樣寫的: 展示出來的效果是這樣的:(瀏覽器有點問題,所以在node的環境下執行) 在使用了proxy後,我們的會變成這樣: 結果如下: 流程的大概是

代理模式(Proxy Pattern)(二)Java API中的動態代理

一、Java動態代理         相對於靜態代理的代理類在編譯時生成(.class檔案),動態代理與其的區別是:動態代理類在執行時在JVM中生成。Java 動態代理機制的出現,使得 Java 開發人員不用手工編寫代理類,只要簡單地指定一組介面及委託類(實現了Invoc

java設計模式動態代理模式 Proxy

代理模式基本上可以理解為:本來讓A做一件事情,可以把事情交給A的代理B去處理,B不僅僅把A該做的做掉,還可以在A該做的事情的基礎上在做一些相關的事情; 所謂動態代理就是利用Java的反射機制,由程式來動態建立代理類。 一般應用場景:新增操作的log日誌,事務。。。。 1.

設計模式-代理proxy一個介面多個實現類(基於spring框架)

根據前臺返回的不同引數,選擇一個介面不同的實現類來實現不同業務邏輯,我們用到了proxy代理類。 首先是spring.xml 配置檔案 如下:(proxy 表示代理類  ××ServiceImpl 表示實現類) <bean id="介面名稱" >      

[瘋狂Java]代理伺服器Proxy代理連線)、ProxySelector(自動代理選擇器)、預設代理選擇器

1. 代理伺服器:     1) 英文就叫Proxy,即代替使用者去連線想要的網站並獲取資訊;     2) 一般主流的商業瀏覽器都提供代理的功能,即你可以先設定一個代理伺服器,那麼接下來所有的上網都是通過該指定的代理伺服器完成;     3) 一旦設定好了代理伺服器,那麼

代理模式(Proxy Pattern)(一)代理模式介紹

一、意圖 為其他物件提供一種代理以控制對這個物件的訪問。 二、適用性 使用代理模式的常見的重要情況有: 1) 遠端(Remote)代理:為一個位於不同的地址空間的物件提供一個局域代表物件。比如:你可以將一個在世界某個角落一臺機器通過代理假象成你區域網中的一部分。

深入理解ES6之——代理和反射(proxy

通過呼叫new proxy()你可以建立一個代理來替代另一個物件(被稱為目標),這個代理對目標物件進行了虛擬,因此該代理與該目標物件表面上可以被當做同一個物件來對待。 建立一個簡單的代理 當你使用Proxy構造器來建立一個代理時,需要傳遞兩個引數:目標物件以及一個處理器,後者是定義了一個或多個陷阱函式的物件。

ES6標準學習 3、數值的擴展

平方和 全局 oat 數值 限制 相關 模式 安全 不同 數值的擴展 註:以下內容中: 0 表示數字零, o 為英文字母。 一、二進制和八進制數值表示法 es6提供了二進制和八進制的數值表示法,分別用前綴0b(或者0B)和0o(或者0O)表示。 1 0b

ES6標準學習 4、數組的擴展

nts 特征 strong 擁有 find() 條件 fin 位置 fine 數組的擴展 一、類數組對象與可遍歷對象轉換為數組 Array.from()方法用於將類數組對象、可遍歷對象轉換為數組,其中可遍歷對象包括es6新增的set和map結構 所謂的類數組對象,本質特

代理模式-Proxy

遠程 對象的訪問 功能 size 增加 pro 訪問 作用 16px 代理模式:為其他對象提供一種代理以控制這個對象的訪問。   代理對象起到的作用,可以去掉功能服務或增加額外的服務。 常見代理模式:   遠程代理、虛擬代理、保護代理、智能引用代理 靜態代理概念和實現方法方

遊戲運維的最佳實踐搜狐暢遊自動化運維之旅!

運維 遊戲 搜狐暢遊 搜狐黎誌剛見證了暢遊遊戲自動化運維平臺的從無到有,通過在其中踩過的坑、解過的結,他向大家來闡述遊戲運維的進階之路。本文主要圍繞暢遊遊戲管理體系與運維自動化的演變歷程、運維自動化的實現及未來運維四方面展開。暢遊運維管理體系與運維自動化的演變歷程暢遊運維管理體系演變歷程從 200

ES6新特性解構賦值(上)

變量賦值 什麽 模式 註意 只需要 一個數 html 代碼 內容 1:什麽是解構賦值 按照一貫的套路,接下來的內容是解釋:什麽是解構賦值? 來看看官方的解釋: ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(