Proxy handler.apply() 方法
關於Proxy更多內容可以參閱Proxy 和 Reflect一章節。
此方法可以攔截Proxy例項作為函式呼叫的操作,包括call()或者apply()方式呼叫。
可以返回任意型別的值。
語法結構:
[JavaScript] 純文字檢視 複製程式碼var p = new Proxy(target, { apply: function(target, thisArg, argumentsList) { //code } });
引數解析:
(1).target:可選,要被代理的目標物件,是一個函式。
(2).thisArg:可選,target目標函式被呼叫時,this指向的物件。
(3).argumentsList:可選,傳遞給p()的引數。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var p = new Proxy(function() {}, { apply: function(target, thisArg, argumentsList) { console.log(argumentsList.join(", ")); return argumentsList[0] + argumentsList[1] + argumentsList[2]; } }); console.log(p(1, 2, 3));
將Proxy例項用作函式呼叫,那麼就會被handler.apply()攔截。
target是被代理的目標物件(一個函式),argumentsList就是傳遞給P()的引數。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let obj = { webName:"螞蟻部落" } var p = new Proxy(function() {}, { apply: function(target, thisArg, argumentsList) { console.log(thisArg.webName); } }); p.apply(obj, [4]);
以apply或者call方式呼叫p,也會被handler.apply()方法攔截,傳遞的obj物件會被handler.apply()的thisArg引數接收。
[JavaScript] 純文字檢視 複製程式碼執行程式碼var obj = { webName:"螞蟻部落" } function func() { console.log(this.webName); } var p = new Proxy(func, { apply: function (target, thisArg, argumentsList) { console.log("呼叫被攔截"); console.log(thisArg); console.log(argumentsList); } }); Reflect.apply(p, obj, [2])
使用Reflect.apply()方式呼叫p也可以被handler.apply()攔截。
關於Reflect.apply()的用法可以參閱Reflect.apply()方法一章節。
相關文章
- Proxy handler.get() 方法
- Proxy handler.setPrototypeOf() 方法
- Proxy handler.getPrototypeOf() 方法
- Proxy handler.deleteProperty() 方法delete
- Proxy handler.getOwnPropertyDescriptor() 方法
- Proxy handler.construct() 方法Struct
- 淺談jQuery中$.proxy()工具方法jQuery
- Proxy代理資料攔截方法
- 前端跨域方法之proxy(代理)前端跨域
- 使用 `open-uri.with_proxy` 方法開啟網頁網頁
- Many To Many could not initialize proxy – no Session的解決方法Session
- Proxy
- 通過代理抓取網頁code方法 proxy httpurlconnection網頁HTTP
- docker – nginx – proxy_pass + proxy_redirectDockerNginx
- nginx proxy_pass 和 proxy_redirectNginx
- Proxy模式模式
- MySQL ProxyMySql
- proxy 收集
- ShardingSphere-Proxy 前端協議問題排查方法及案例前端協議
- 使用Proxy.newProxyInstance包裝物件池,免去returnObject方法呼叫物件Object
- 代理模式(Proxy)模式
- JavaScript 之 ProxyJavaScript
- 配置proxy代理
- jQuery.proxy()jQuery
- http proxy原理HTTP
- 安卓 no_proxy安卓
- MySQL Proxy應用入門(1)--安裝MySQL ProxyMySql
- Nginx伺服器的反向代理proxy_pass配置方法講解Nginx伺服器
- MySQL Proxy應用入門(2)--MySQL Proxy配置選項MySql
- 代理(Proxy)的解析
- Proxy使用詳解
- 4.1.1Proxy元件元件
- MySQL Proxy的用途MySql
- Rpc Call ProxyRPC
- mysql proxy安裝MySql
- could not initialize proxy - no SessionSession
- zabbix分散式proxy分散式
- 代理模式(Proxy Pattern)模式