有没有一种方法可以覆盖js对象属性检索?

时间:2018-08-02 22:59:44

标签: javascript

我需要自动分析函数,并确定每个函数使用对象的哪些属性。

例如,功能非常简单

(a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

输入对象的所有属性均为数字,并且函数不会更改输入对象

我的第一个想法是分析函数的字符串形式,但要使其更加安全,如果我可以使用测试伪对象运行每个函数来动态传递任何名称的所请求属性并创建一个那个名字的笔记。

例如,在vb.net中,可以为类定义默认属性,以便可以根据键值动态处理每个对象(键)的访问。 js中有类似的东西吗?

1 个答案:

答案 0 :(得分:2)

您可以使用proxies并将它们传递给函数,并记录调用了哪些属性:

const fn = (a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

var aProxy = new Proxy({}, {
  get: (obj, prop) => console.log(`${prop} was called on a`)
});

var bProxy = new Proxy({}, {
  get: (obj, prop) => console.log(`${prop} was called on b`)
});

fn(aProxy, bProxy);