javascript - 有没有办法覆盖 js 对象属性检索?
问题描述
我需要自动分析函数并确定每个函数使用对象的哪些属性。
功能非常简单,例如
(a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)
输入对象的所有属性都是数字的,并且函数不会更改输入对象
我的第一个想法是分析函数的字符串形式,但为了使其更加万无一失,如果我可以使用测试虚拟对象运行每个函数,这些虚拟对象动态传递任何名称的请求属性并记下它,那将是完美的姓名。
例如,在 vb.net 中,您可以为类定义默认属性,以便可以根据键值动态处理每个对象(键)访问。js中有没有类似的东西?
解决方案
您可以使用代理并将它们传递给函数,并记录调用了哪些属性:
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);
推荐阅读
- c++ - 使用递归函数在数组中查找数字的堆栈溢出错误
- ruby - 使用 group_by 从数组创建哈希
- libgdx - LibGDX:html项目中的粒子
- reactjs - ReactJs:处理包含许多段落的输入文本
- ocaml - 如何改进匹配模式以在 Ocaml 中提取列表的第二项
- asp.net-core - 为什么 IHttpContextAccessor 总是在 Blazor 服务器端获得空 IP?
- python - 敌人一直向右移动
- python - pip 和 conda 在哪里保存已安装软件包的列表,以便他们知道谁安装了什么?
- c++ - 当窗口大小发生变化时,如何调整窗口的大小/重新定位控件
- c - 将两个无符号整数相乘为无符号整数