handler.apply()

handler.apply() 方法用于拦截函数的调用。

语法

var p = new Proxy(target, {
  apply: function(target, thisArg, argumentsList) {
  }
});

参数

以下是传递给apply方法的参数,this上下文绑定在handler对象上.

target
目标对象(函数)。
thisArg
被调用时的上下文对象。
argumentsList
被调用时的参数数组。

返回值

apply方法可以返回任何值。

描述

handler.apply 方法用于拦截函数的调用。

拦截

该方法会拦截目标对象的以下操作:

约束

如果违反了以下约束,代理将抛出一个TypeError:

target必须是可被调用的。也就是说,它必须是一个函数对象。

示例

以下代码演示如何捕获函数的调用。

var p = new Proxy(function() {}, {
  apply: function(target, thisArg, argumentsList) {
    console.log('called: ' + argumentsList.join(', '));
    return argumentsList[0] + argumentsList[1] + argumentsList[2];
  }
});

console.log(p(1, 2, 3)); // "called: 1, 2, 3"
                         // 6

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
[[Call]]
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
[[Call]]
Draft  

浏览器兼容性

Update compatibility data on GitHub
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
apply Chrome Full support 49 Edge Full support 12 Firefox Full support 18 IE No support No Opera Full support 36 Safari Full support 10 WebView Android Full support 49 Chrome Android Full support 49 Firefox Android Full support 18 Opera Android Full support 36 Safari iOS Full support 10 Samsung Internet Android Full support 5.0 nodejs Full support 6.0.0

Legend

Full support  
Full support
No support  
No support

另见