• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • handler.apply()

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

    语法

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

    参数

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

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

    返回值

    apply方法可以返回任何值。

    描述

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

    拦截

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

    • proxy(...args)
    • Function.prototype.call()
    • Reflect.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
    

    上篇:handler.has()

    下篇:handler.ownKeys()