ES6 Reflect 与 Proxy 之 apply方法

apply(target, ctx, args): 用于拦截函数的调用\ call 和 reply 操作. target 表示目标对象, ctx 表示目标对象上下文, args 表示目标对象的参数数组.

 测试代码:

function sub(a, b) {
	return a-b;
}
let handler = {
	apply: function(target, ctx, args){
		console.log('handle apply');
		console.log(...arguments);
		var result =  Reflect.apply(...arguments);
		console.log(result);
		return result;
	}
}

let proxy = new Proxy(sub, handler)
proxy(2,1)

执行结果:

handle apply
[Function: sub] undefined [ 2, 1 ]
1

Proxy 用于修改某些操作的默认行为, 等同于在语言层面做出修改,所以属于一种"元编程",即对编程语言进行编程.

Proxy 可以理解成,在目标对象之前假设一层"拦截", 外界对该对象的访问,都必须通过这层拦截,因此提供一种机制,可以对外界的访问进行过滤和改写.

 

 

参考:

https://www.runoob.com/w3cnote/es6-reflect-proxy.html

https://segmentfault.com/q/1010000012825297/


版权声明:本文为qq_30346413原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。