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
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
applyChrome Full support 49Edge Full support 12Firefox Full support 18IE No support NoOpera Full support 36Safari Full support 10WebView Android Full support 49Chrome Android Full support 49Edge Mobile Full support YesFirefox Android Full support 18Opera Android Full support 36Safari iOS Full support 10Samsung Internet Android Full support 5.0nodejs Full support 6.0.0

Legend

Full support  
Full support
No support  
No support

另见