- ES6 教程
- ES6 - 首頁
- ES6 - 總覽
- ES6 - 環境
- ES6 - 語法
- ES6 - 變數
- ES6 - 運算子
- ES6 - 決策制定
- ES6 - 迴圈
- ES6 - 函式
- ES6 - 事件
- ES6 - Cookie
- ES6 - 頁面重定向
- ES6 - 對話方塊
- ES6 - void 關鍵字
- ES6 - 頁面列印
- ES6 - 物件
- ES6 - 數字
- ES6 - 布林值
- ES6 - 字串
- ES6 - Symbol
- ES6 - 新字串方法
- ES6 - 陣列
- ES6 - 日期
- ES6 - Math
- ES6 - RegExp
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 類
- ES6 - Map 和 Set
- ES6 - Promise
- ES6 - 模組
- ES6 - 錯誤處理
- ES6 - 物件擴充套件
- ES6 - Reflect API
- ES6 - Proxy API
- ES6 - 驗證
- ES6 - 動畫
- ES6 - 多媒體
- ES6 - 除錯
- ES6 - 影像地圖
- ES6 - 瀏覽器
- ES7 - 新特性
- ES8 - 新特性
- ES9 - 新特性
- ES6 有用資源
- ES6 - 快速指南
- ES6 - 有用資源
- ES6 - 討論
ES6 - handler.apply()
以下示例定義了一個函式 rectangleArea,它將寬度和高度作為引數並返回矩形的面積。 該程式建立一個代理併為 rectangleArea 函式定義一個處理器物件。 此 處理器物件 在執行函式前驗證傳遞給該函式的引數數量。 如果未向函式傳遞兩個引數,處理器物件將引發一個錯誤。
<script>
function rectangleArea(width,height){
return width*height;
}
const handler = {
apply:function(target,thisArgs,argsList){
console.log(argsList);
//console.log(target)
if(argsList.length == 2){
return Reflect.apply(target,thisArgs,argsList)
}
else throw 'Invalid no of arguments to calculate'
}
}
const proxy = new Proxy(rectangleArea,handler)
const result = proxy(10,20);
console.log('area is ',result)
proxy(10) // Error
</script>
上述程式碼的輸出如下 -
[10, 20] area is 200 [10] Uncaught Invalid no of arguments to calculate
廣告