在每个对象的调用中使用相同的function

我反对js

var myobj = {} 

我需要每次你调用方法像myObj.a()myObj.b()等方法,它会调用相同的function ,不会调用任何其他的东西… …

 like myFn = function(){ return 1 + 1 ; } 

好,所以代理是一种select。

这是ES6,我不相信它可以pollyfilled所以没有IE支持我害怕。 正如你所说那不是一个问题,那么一切都好。

 var obj = {}; var objProxied = new Proxy(obj, { get: (target, key, reciever) => { console.log(`Handler hit, looking for prop ${key}`); return (...args) => foo(...args); // return what ever you like here } }); 

本质上,它是如何工作的,你提供的代理对象是“代理”和处理程序的地图。 MDN列出了所有不同的处理程序,如果你不提供处理程序,那么它会调用这个对象。

根据处理程序的types,您的处理程序提供了不同的东西。 在我们的例子中, get获得被调用的对象,原始obj和属性名称。

重要的是要注意你的处理器必须返回一个值(如果在这个例子中的注释),如果你不这样做,它会调用底层对象。 这会在我们的例子中导致一个exception,因为我们会尝试执行一个未定义的方法。

MDN

在行动:

 var obj = {}; function foo(...args) { console.log('foo called With:', ...args); } var objProxied = new Proxy(obj, { get: (target, key, reciever) => { console.log(`Handler hit, looking for prop ${key}`); return (...args) => foo(...args) } }); objProxied.a(10); objProxied.b(20, 50);