Javascript 如何在ES5中实现代理

Javascript 如何在ES5中实现代理,javascript,ecmascript-5,Javascript,Ecmascript 5,让我们有以下代码段: var obj = {}; obj.doSomething = function(){ console.log("Hello from obj"); } 我想为这个对象创建一个代理,每次调用obj中的任何方法时,执行其他操作,然后调用实际的obj方法。 假设我希望代理打印消息“从对象[object]调用[methodname]” 例如: obj.doSomething(); 输出: Calling [doSomething] method f

让我们有以下代码段:

var obj = {};
obj.doSomething = function(){
    console.log("Hello from obj");
}
我想为这个对象创建一个代理,每次调用
obj
中的任何方法时,执行其他操作,然后调用实际的
obj
方法。 假设我希望代理打印消息“从对象[object]调用[methodname]”

例如:

obj.doSomething();
输出:

Calling [doSomething] method from object [obj].
Hello from obj

如何在ES5中实现这一点?

您可以使用内置JavaScript代理对象,如下所示:

var obj={};
obj.doSomething=函数(){
log(“来自obj的你好”);
}
常量处理程序={
获取:函数(目标、道具){
log(`Calling[${prop}]from object[${target}`);
目标[道具]();
}
};
const proxy=新代理(obj,handler);

proxy.doSomething
我建议您根据自己的需要以及ES5的语法检查、修改
apply()
之前的行