首页 > 解决方案 > 有没有办法覆盖 js 对象属性检索?

问题描述

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

功能非常简单,例如

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

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

我的第一个想法是分析函数的字符串形式,但为了使其更加万无一失,如果我可以使用测试虚拟对象运行每个函数,这些虚拟对象动态传递任何名称的请求属性并记下它​​,那将是完美的姓名。

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

标签: javascript

解决方案


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

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);


推荐阅读